mysql - 使用LIMIT x,y更新

时间:2011-04-24 22:35:07

标签: mysql

UPDATE table SET checked = 1 WHERE field = 'xxx' LIMIT 1

工作正常,但

UPDATE table SET checked = 1 WHERE field = 'xxx' LIMIT 1, 10

抛出错误“#1064 - 您的SQL语法出错;请查看与您的MySQL服务器版本对应的手册,以便在第1行的”10“附近使用正确的语法”< / p>

为什么不可能?我想更新第一行以外的所有内容。

3 个答案:

答案 0 :(得分:8)

update table set checked = 1 where id in (select * from (select id from table where field = 'xxx' order by id limit 1, 10) as t)

答案 1 :(得分:6)

LIMIT子句中的

UPDATE仅仅是可以更新行数的上限。

这与SELECT中的情况不同,在VIEW中您可以忽略除了某个子范围的结果行以外的所有内容。

如果您确实需要这样的内容,则应使用LIMIT UPDATE限制,并对其执行{{1}}。

答案 2 :(得分:0)

我有类似的情况,但在我的情况下,我只需要更新按数字ID排序的2行,所以我的查询将是这样的:

UPDATE myTable SET Column1='some data',Column2='some othe data' WHERE Column3='some criteria' LIMIT 1;

UPDATE myTable SET Column1='some data',Col2='some othe data' WHERE Column3='some criteria2' ORDER BY ID DESC LIMIT 1;

注意:第一个查询隐式选择表中的第一个匹配行,第二个查询通过显式反转顺序选择第二个匹配行。它没有回答这个问题,但它可能会使有类似我的问题的人受益。