我想用多语句创建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 ;
答案 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);
我现在无法测试=(
让我知道它是否有效!