MySql Select Case从表中选择数据

时间:2012-07-19 09:41:55

标签: mysql sql

我想根据参数从数据库中的一个表中选择数据。 这就是我所做的。

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

2 个答案:

答案 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>