使用MySQL更新具有相同值的20,000行

时间:2016-07-15 07:58:01

标签: mysql command-line

在包含超过500,000行的MySQL表中,如何为同一列更新20,000行具有相同值的行?

我有一个默认为0的已处理列,我想将其更新为3,以便不会挑选这20,000个条目进行处理。

到目前为止我尝试过:我创建了一个包含所有20,000个ID列表的文件并尝试了此查询:

update table set processed=3 where id in (...)

然后我尝试粘贴...中的id列表,但它使系统挂起。

编辑:

在表格中,我希望其他行保留processed=0,因此set processed=3 where processed=0无效。我必须按ID定位特定行。

1 个答案:

答案 0 :(得分:1)

这就是我所做的:

我创建了一个PHP脚本,该脚本从id为#的文件中提取id,然后使用for循环创建一个查询并专门更新该行:

ID文件:

5351245
5351246
5351247
...
5373362
5373363
5373364

PHP脚本:

$file = "ids.txt";
$link = mysqli_connect("localhost", "[USERNAME]", "[PASSWORD]", "[DATABASE]");

$handle = fopen($file, "r");
if ($handle) {
    while (($id = fgets($handle)) !== false) {
        $sql = "UPDATE responses SET bucketID=0, processed=3 WHERE messageID=".$id.";";
        if(mysqli_query($link, $sql)){
            echo "Record $id was updated successfully.\n";
        } else {
            echo "ERROR: Could not able to execute $sql. " . mysqli_error($link)."\n";
        }
    }
    fclose($handle);
}
相关问题