2012-07-19 113 views
-2

我想根據參數從數據庫中的一個表中選擇數據。 這是我所做的。MySql Select Case從表中選擇數據

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 

回答

1

如果可以使用if else子句,則不能在子查詢中使用大小寫。

IF(ID IN(1,2)) THEN 
     SELECT * FROM table1; 
ELSEIF(ID IN(3,4)) THEN 
     SELECT * FROM table2; 
END IF; 
0
select * from table1 where id in (1,2) 
union all 
select * from table2 where id in (3,4) 

雖然列數必須跨越兩個表這個工作是相同的(並且在任何情況下,它是不是在所有不好的做法來命名選擇列,以避免混亂,bahaviour-蠕變等)。