2011-01-09 5 views
1

다중 명령문을 사용하여 저장 프로 시저를 만들고 싶습니다. 작동하지 않습니다. Google에서 문제가 발생하여 하위 쿼리 문 "MySQL이 아직 지원하지 않습니다 '를 지원하지 않습니다. LIMIT & IN/ALL/어떤LIMIT 하위 쿼리로 가장 좋은 방법 MySQL

내 문이 같은/일부 하위 쿼리 ' "

DROP PROCEDURE IF EXISTS proc_Name; 
CREATE PROCEDURE `DBName`.`proc_Name`() 
BEGIN 
    SELECT FROM table1 WHERE ORDER BY table1_Colom LIMIT 100; 
    UPDATE table2 SET table2_colom1 = 1 WHERE ID IN (SELECT ID FROM table2 ORDER BY table2_colom1 LIMIT 100); 
END ; 
+0

알려주세요! 나는 별명 miht 도움, 그래서 다른 별명을주고하려고 생각 이상한 일을하고 싶습니다. 업데이트 할 100 개를 어떻게 선택합니까? 매번 동일한 100 개를 업데이트하고 있습니까? 실제 사용 사례를 설명 할 수 있습니까? – majelbstoat

+0

이상하게 보입니다. 그러나 첫 번째 문에는 100 개의 레코드가 있습니다. colom에 의해 주문); 그럼 내가 응답을 위해 – Hiyasat

답변

4
UPDATE 
     table2, (SELECT ID FROM table2 ORDER BY table2_colom1 LIMIT 100) AS temp_table 
    SET 
     table2_colom1 = 1 
    WHERE 
     table2.ID = temp_table.id; 
-1

나는 몰래 (낙관적) 여기에 문제가 당신이에 업데이트를 수행 동일한 테이블에서 선택되는 느낌이 듭니다. ORDER BY는 변경하려는 정확한 ID에 따라 다릅니다.

UPDATE table2 T2 SET T2.table2_colom1 = 1 WHERE T2.ID IN 
    (SELECT T2A.ID FROM table2 T2A ORDER BY T2A.table2_colom1 LIMIT 100); 

지금 테스트 할 수있는 수단이없는 = (
가 작동하면이처럼 보인다

+1

주셔서 감사합니다하지만 "MySQL은 아직 '제한/IN/모두/ANY/일부 하위 지원하지 않습니다 쿼리 "MySQL 문서 – Hiyasat