2009-04-07 26 views
6

我有一個這樣的查詢:MYSQL +更新前n

update table 
set  status = 1 
where status = 2;  

,但我只喜歡做這個要頂400我嘗試添加一個「極限0,400」(如我會在查詢中),但沒有奏效。我做了一些搜索,並且mysql似乎不支持TOP(n)命令,就像sql server一樣。

任何想法我會怎麼做?

編輯:以供將來參考,我用的是下面的樣式選擇,它工作得很好:

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

,但它不會與工作的「0」,不管是什麼原因更新。我會考慮這種不一致和模棱兩可的行爲,但是哦。

回答

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

經過在MySQL 5.2.0-falcon-alpha-community-nt-log把一個訂單,確認工作。

在你的情況是0LIMIT 0, 400不起作用。

您不能使用UPDATELIMIT的下限。

2

試試這個:

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

您還可以通過條款

update table 
set  status = 1 
where status = 2 
ORDER BY id 
LIMIT 400 
+0

這會更新每一行,因爲2.之後的分號。 – 2009-04-07 15:56:31