我想根据参数从数据库中的一个表中选择数据。 这就是我所做的。
DELIMITER $$
CREATE PROCEDURE `myDB`.`Temp`(
IN ID INT(11)
)
BEGIN
SELECT CASE
WHEN ID IN(1,2) THEN
SELECT * FROM table1;
WHEN ID IN(3,4) THEN
SELECT * FROM table2;
END CASE;
END$$
DELIMITER ;
但是。我收到了错误:
Error Code : 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax
to use near 'SELECT * FROM table1;
WHEN ID IN(3,4) THEN
SELECT * FROM table2;
END' at line 7
答案 0 :(得分:1)
当你可以使用if else子句时,你不能使用子查询。
IF(ID IN(1,2)) THEN
SELECT * FROM table1;
ELSEIF(ID IN(3,4)) THEN
SELECT * FROM table2;
END IF;
答案 1 :(得分:0)
select * from table1 where id in (1,2)
union all
select * from table2 where id in (3,4)
尽管两个表的列数必须相同才能使其工作(并且在任何情况下,在SELECT中命名列以避免混淆,bahaviour-creep等等都不是不好的做法。) / p>