2010-02-02 115 views
1

如果我有一个MySQL表由字段选择onetwothreefour可我然后以某种方式使用IF语句来接收励磁four,只有在一定的条件真正?我必须有两套SELECT声明吗?MySQL的 - 基于if语句

我可以做(在伪代码):

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 

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

回答

4

用途:

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

你不能在SELECT列表可选列(S) - 它要么包含列适合的值,或没有列在所有。

您可以有两个(或更多)语句由一个IF语句分隔开,但在其中一个语句中增加一列是不理想的,因为您正在将决策逻辑推送到您的应用程序中以处理缺少的列状况。

+1

谢谢 - 这基本上是我想知道的。 – Eikern 2010-02-02 23:38:11