-2

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

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
4

2 回答 2

1

当您可以使用 if else 子句时,您不能在 case 内使用子查询。

IF(ID IN(1,2)) THEN
        SELECT * FROM table1;
ELSEIF(ID IN(3,4)) THEN
        SELECT * FROM table2;
END IF;
于 2012-07-19T09:44:51.023 回答
0
select * from table1 where id in (1,2)
union all
select * from table2 where id in (3,4)

尽管两个表的列数必须相同才能使其工作(并且在任何情况下,为 SELECT 中的列命名以避免混淆、bahaviour-creep 等都不是坏习惯)。

于 2012-07-19T09:47:16.790 回答