MySQL中的IF和Case语句

时间:2012-12-26 16:43:05

标签: mysql if-statement case-statement

我想选择*如果5大于2,如果为false则选择特定列。我哪里错了?

SELECT IF(5>2, *, column_x),
CASE whereheard_name WHEN 'Newspaper' THEN 'a'
         WHEN 'TV' THEN 'b' 
         WHEN 'Internet' THEN 'c'
         ELSE '-'
    END 
    AS result
FROM whereheard;

感谢上述答案。以下是我正在使用的以下示例存储过程:

DELIMITER $$

USE `registration`$$

DROP PROCEDURE IF EXISTS `test2`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `test2`()
BEGIN
    IF(5>2) THEN
            SELECT * FROM whereheard;
        ELSE
            SELECT whereheard_name FROM whereheard;
        END IF;
END$$

DELIMITER ;

这就是我所说的:

CALL test2(),        
CASE whereheard_name WHEN 'Newspaper' THEN 'a'
         WHEN 'TV' THEN 'b' 
         WHEN 'Internet' THEN 'c'
         ELSE '-'
    END 
    AS result
FROM whereheard; 

我在哪里错了?

1 个答案:

答案 0 :(得分:1)

你不能在SQL中做到这一点(我的意思是特定语句不能有动态列数)。您可以编写执行该作业的存储过程:

CREATE PROCEDURE FOO .....
.....
IF (5>2) THEN
 SELECT * FROM ...
ELSE
 SELECT column1 FROM ....
END IF;