2011-01-09 90 views
1

我想創建帶有多語句的存儲過程,並且它不工作,並且谷歌問題並且發現mysql不支持Subquery語句「MySQL尚不支持」LIMIT & IN/ALL/ANY/SOME子查詢「」使用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

這似乎是!一個奇怪的事情想要做什麼,你如何選擇哪個100更新?你是否每次更新100?你能解釋你的實際使用案例嗎? – majelbstoat 2011-01-09 08:02:54

+0

我知道它看起來很奇怪,但在第一個聲明中,我得到100條記錄order by colom);然後我想更新那裏狀態 – Hiyasat 2011-01-09 08:17:49

回答

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。我想別名miht幫助,所以給不同的別名,並嘗試:

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); 

我沒有辦法,現在來測試=(
讓我知道,如果它