我想选择*如果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;
我在哪里错了?
答案 0 :(得分:1)
你不能在SQL中做到这一点(我的意思是特定语句不能有动态列数)。您可以编写执行该作业的存储过程:
CREATE PROCEDURE FOO .....
.....
IF (5>2) THEN
SELECT * FROM ...
ELSE
SELECT column1 FROM ....
END IF;