2012-07-19 75 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-蠕变等)。