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>
为什么不可能?我想更新第一行以外的所有内容。
答案 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;
注意:第一个查询隐式选择表中的第一个匹配行,第二个查询通过显式反转顺序选择第二个匹配行。它没有回答这个问题,但它可能会使有类似我的问题的人受益。