2011-08-30 43 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