如果我有一个包含字段one
,two
,three
和four
的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
我只是好奇,我没有特定的用法。
答案 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。