这是一张桌子
Id Date Name vendor
1 | 123 | jungle | qwe
2 | 43 | jungle | qwe
3 | 678 | jungle | ewq
4 | 678 | jungle | ewq
5 | 678 | jungle | ewq
6 | 678 | jungle | hgjghj此脚本从表中删除名称列中具有重复值且具有相同供应商值的行。只留下一个唯一的行。在单击前端的按钮后,还可以通过XHR ajax调用$.post()执行该脚本。
$sql = DELETE x
FROM $table x
JOIN
( SELECT vendors
, email
, MIN(lead_id) min_lead_id
FROM $table
WHERE vendors = $vendor
GROUP BY vendors
, email
) y
ON y.vendors = x.vendors
AND y.email = x.email
AND y.min_lead_id <> x.lead_id;
mysql_query($sql, $conn);
echo json_encode($foo);结果呢?
Id Date Name vendor
1 | 123 | jungle | qwe
3 | 678 | jungle | ewq
6 | 678 | jungle | hgjghj现在有了50k的表,它在两秒钟内完成。或者更确切地说,它通过echo json_encode($result);返回ajax调用。现在,我假设这个过程已经完成,但是在进入我的mysql表并一次又一次刷新之后,我发现mysql仍然在运行,因为表中报告的总行数一直在变化,就好像它的查询仍然在运行一样。
如何让echo json_encode($result);等待数据库更新完成?或者有更好的方法来解决这个问题?谢谢。
$("#complete_dedupe").live("click", function(e) {
e.preventDefault();
table_name = $('#IMEXp_import-selectTable-select option:selected').val();
$.post("dedupevendor.php", {"table": table_name}, function(data) {
count_dedupe = 0;
count_dedupe = data;
$("#dupe_vendor").append(count_dedupe);
$("#tr2").fadeIn("slow");
vendor = $("#vendor_hidden").val();
$("#edit_par4").append(vendor);
}, "json")
});通过不断刷新phpmyadmin,圆圈数字会在不到一分钟的时间内发生变化。这只发生在我运行重复数据删除脚本之后,并且脚本已经从ajax调用返回之后。图片如下所示

发布于 2012-08-08 11:01:31
您看不到phpMyAdmin变化的原因是Innodb没有像MyISAM那样保持行数。
运行下面的命令,而不是查看表摘要;当您运行去重脚本时,它应该会发生变化。
SELECT COUNT(*) FROM auto;发布于 2012-08-08 10:42:16
试试这个:
if(mysql_query($sql, $conn))
{
echo json_encode($foo);
}这样,只有在mysql_query()返回值之后,数据才会返回到调用ajax脚本,这应该只有在函数完成处理之后才会发生
https://stackoverflow.com/questions/11856328
复制相似问题