UPDATE table SET checked = 1 WHERE field = 'xxx' LIMIT 1
工作正常,但MySQL的 - 更新與LIMIT X,Y
UPDATE table SET checked = 1 WHERE field = 'xxx' LIMIT 1, 10
拋錯誤「#1064 - 你在你的SQL語法錯誤;檢查對應於你的MySQL服務器手冊版本爲在第1行'10'附近使用的正確語法版本「
爲什麼不可能?我想更新除第一行之外的所有內容。
UPDATE table SET checked = 1 WHERE field = 'xxx' LIMIT 1
工作正常,但MySQL的 - 更新與LIMIT X,Y
UPDATE table SET checked = 1 WHERE field = 'xxx' LIMIT 1, 10
拋錯誤「#1064 - 你在你的SQL語法錯誤;檢查對應於你的MySQL服務器手冊版本爲在第1行'10'附近使用的正確語法版本「
爲什麼不可能?我想更新除第一行之外的所有內容。
LIMIT
在UPDATE
子句中僅僅是可以更新多少行的上限。
它不像在SELECT
那裏你可以忽略所有的結果行的某些子範圍來處理。
如果你真的需要這樣的東西,你應該使用VIEW
LIMIT
限制,並執行該UPDATE
。
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)
實際上起作用。通常,mysql不支持子查詢中的限制,但將查詢嵌入到另一個查詢中的訣竅可以做到這一點! – marlar 2013-10-10 12:03:49
我也有類似的情況,但對我來說,我需要只更新2通過數字ID有序的行,所以我的查詢會一直是這樣的:
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;
注意:第一個查詢隱式選擇表中的第一個匹配行,第二個查詢通過顯式顛倒順序選擇第二個匹配行。它沒有回答這個問題,但它可能會讓有類似於我的問題的人受益。
嗯,它實際上使sence,但不支持在mysql ;-) – zerkms 2011-04-24 22:41:52
@zerkms:同意。 – 2011-04-24 22:44:25
@zerkms我也同意! – 2011-08-15 13:18:47