2010-02-02 155 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