9

我有这样的查询:

update  table
set     status = 1
where   status = 2;     

但我只想对前 400 名执行此操作。我尝试添加一个“限制 0、400”(就像我在查询中那样),但这没有用。我做了一些搜索,mysql 似乎不像 sql server 那样支持 TOP(n) 命令。

知道我会怎么做吗?

编辑:为了将来参考,我使用以下样式进行选择,效果很好:

select  * 
from    table
where   ... limit 0, 400;

但在更新中,无论出于何种原因,它都不能与“0”一起使用。我会考虑这种不一致和模棱两可的行为,但是哦,好吧。

4

3 回答 3

28
UPDATE  table
SET     status = 1
WHERE   status = 2
ORDER BY id
LIMIT 400

签到MySQL 5.2.0-falcon-alpha-community-nt-log,确认工作。

在你的情况下,它0不起作用LIMIT 0, 400

UPDATE您不能在's中使用下限LIMIT

于 2009-04-07T15:50:19.790 回答
3

试试这个:

update  table
set     status = 1
where   status = 2
LIMIT 400

您也可以通过子句下订单

update  table
set     status = 1
where   status = 2
ORDER BY id
LIMIT 400
于 2009-04-07T15:48:17.237 回答
1

以供将来参考,不要忘记关闭安全模式

SET SQL_SAFE_UPDATES = 0;
update YOUR_DATABASE_NAME.TABLE_NAME
set COLUMN_NAM = 0
limit 400;
SET SQL_SAFE_UPDATES = 1;

例如,MySQL 不允许您更新记录以防止您在安全模式下出错,因此您必须禁用它才能更新您的记录。

另一种语法非常先进。limit 会将返回的记录数量限制为您选择的数量。

于 2020-06-15T09:45:04.263 回答