1

这是一张桌子

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 call 执行$.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);. 现在,我假设该过程已完成,但是在进入我的 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 调用返回之后。图片如下

在此处输入图像描述

4

2 回答 2

2

您在 phpMyAdmin 中没有看到变化的原因是它Innodb没有像这样保持运行的行数MyISAM

与其查看表格摘要,不如运行它;当您运行重复数据删除脚本时,它应该会改变。

SELECT COUNT(*) FROM auto;
于 2012-08-08T03:01:30.947 回答
-1

试试这个:

if(mysql_query($sql, $conn))
{
  echo json_encode($foo);
}

这样,只有在mysql_query()返回值后才会将数据返回给调用 ajax 脚本,这应该仅在函数完成处理后发生

于 2012-08-08T02:42:15.883 回答