【发布时间】:2016-07-15 07:58:00
【问题描述】:
在一个超过 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 定位特定行。
【问题讨论】:
-
所以您想将
0的每个实例替换为3? -
更新表集已处理=3 其中已处理=0;
-
我不确定您的说明是否非常清楚。你会扩展吗?
target specific row by ID是什么意思? -
@halfer:这意味着要更新的行无法从它们的当前值中识别,只能从它们各自的唯一 ID 中识别(假设这些不是值)......这意味着唯一的选择是可以在
UPDATE语句(或等效语句)中列出 20,000 个 ID。 -
@halfer:乍一看,
WHERE id IN (...)很容易被误读为WHERE id IN SELECT(...),我给你:)
标签: mysql command-line