2011-08-30 44 views
0

請在我從dlr表中選擇前200行後,幫助我將bill列的前200行更新爲3。我也希望在我的select語句回來選擇另外200行時不會有重複。使用子查詢在mysql中進行多次更新

它只會選擇那些不3.

下面是我寫的查詢賬單列行,它給我以下提到的錯誤。

'LIMIT & IN/ALL/ANY/SOME subquery: 
UPDATE dlr SET bill = 3 
WHERE dlrid IN (SELECT dlrid FROM dlr WHERE bill = 0 LIMIT 0,200); 

錯誤我收到= This version of MySQL doesn't yet support

任何人可以幫助我嗎?

回答

3

您不需要子查詢。

UPDATE dlr SET bill = 3 WHERE bill = 0 LIMIT 200; 
+0

+1比我的回答好得多! – mdma

+1

當使用'LIMIT'時,通常使用'ORDER BY'。因此,您可以決定操作發出的順序(在這種情況下爲DELETE),而不是讓db決定。 –

+0

謝謝,這真的有幫助 – kayode

0

移動極限子句出從子查詢到更新查詢:

UPDATE dlr SET bill = 3 WHERE dlrid IN (SELECT dlrid FROM dlr WHERE bill = 0) LIMIT 200; 

沒有必要使用範圍,因爲下一個200被保證是不同於所述第一200,因爲賬單從0變爲3.

爲了這個工作,dlrid在dlr中必須是唯一的,這在名稱上我猜是這樣。

+0

當我嘗試使用您的查詢它給了這個錯誤:你不能指定目標表'dlr'在FROM子句中更新。謝謝 – kayode