这是一张表
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调用返回之后。图片如下:
答案 0 :(得分:2)
你没有看到phpMyAdmin发生变化的原因是Innodb
没有保持行的运行次数,例如MyISAM
。
不要查看表格摘要,而是运行;当你运行你的重复数据删除脚本时它应该改变。
SELECT COUNT(*) FROM auto;
答案 1 :(得分:-1)
试试这个:
if(mysql_query($sql, $conn))
{
echo json_encode($foo);
}
这样,只有在mysql_query()
返回一个值后才会将数据返回给调用的ajax脚本,这应该只在函数完成处理后才会发生