2011-01-09 38 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); 

我没有办法,现在来测试=(
让我知道,如果它