LIMIT子查询MySQL的最佳解决方法

时间:2011-01-09 07:41:41

标签: mysql

我想用多语句创建Stored PROCEDURE,它不起作用,而且Google的问题发现mysql不支持Subquery语句“MySQL还不支持'LIMIT& IN / ALL / ANY / SOME子查询““

我的陈述是这样的:

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 ;

2 个答案:

答案 0 :(得分: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 :(得分:-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); 

我现在无法测试=(
 让我知道它是否有效!