MySQL - 基于IF语句进行选择

时间:2010-02-02 23:16:04

标签: sql mysql

如果我有一个包含字段onetwothreefour的MySQL表,我可以以某种方式使用IF语句来只有当某个条件成立时才会收到字段four?我必须有两套SELECT声明吗?

我能做(伪代码):

SELECT one, two, three
IF (1 == 1) THEN
four
ENDIF
FROM table

或者我不得不这样做:

IF (1 == 1) THEN 
SELECT one, two, three, four
ENDIF
ELSE THEN
SELECT one, two, three
ENDIF

我只是好奇,我没有特定的用法。

2 个答案:

答案 0 :(得分:4)

使用:

SELECT t.one,
       t.two,
       t.three,
       CASE WHEN 1 = 1 THEN t.four ELSE NULL END AS four
  FROM TABLE t

您不能在SELECT列表中包含可选列 - 它包含列和适当的值,或者根本没有列。

您可以将两个(或更多)语句用IF语句分隔,但是在其中一个语句中有一个额外的列并不理想,因为您正在将决策逻辑推送到您的应用程序中以处理丢失的列情况。

答案 1 :(得分:0)

尽管您可以使用IF statement,但对于此类用例,您确实需要stored procedures