2011-08-30 5 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'를 사용하는 것이 좋습니다. 따라서 db가 결정하도록하는 것보다 작업이 수행하는 순서 (이 경우 DELETE)를 결정할 수 있습니다. –

+0

고마워, 정말 도움이된다. – kayode

0

이동합니다 업데이트 쿼리에 밖으로 하위 쿼리에서 LIMIT 절 :

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

범위를 사용할 필요가 없습니다, 다음 (200)는 제 200 별개로 보장되어 있기 때문에, 청구서가 0에서 3으로 바뀌기 때문에.

이 작업을하려면 dlr이 고유해야하며 dlr은 이름으로 추측 할 수 있어야합니다.

+0

내가이 오류를 준 귀하의 쿼리를 사용하여 시도 : 당신 FROM 절에서 업데이 트를위한 대상 테이블 'dlr'을 지정할 수 없습니다. 감사합니다. – kayode

관련 문제