作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
如果 5 大于 2,我想选择 *,如果为假,则选择特定列。我哪里错了?
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;
我哪里出错了?
最佳答案
你不能在 SQL 中这样做(我的意思是特定语句不能有动态的列数)。你可以编写完成这项工作的存储过程:
CREATE PROCEDURE FOO .....
.....
IF (5>2) THEN
SELECT * FROM ...
ELSE
SELECT column1 FROM ....
END IF;
关于mysql - MySQL 中的 IF 和 Case 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14043458/
我是一名优秀的程序员,十分优秀!