-2

パラメータに基づいて、データベース内のテーブルの1つからデータを選択したいと思います。これが私がしたことです。

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で列に名前を付けることは決して悪い習慣ではありません)。

于 2012-07-19T09:47:16.790 に答える