2011-07-07 13 views
0

選擇一個表列有沒有去上一個條件選擇一個表列,在此查詢:?如何在條件

SELECT x,y FROM Z 

我想要選擇在Y列Y的條件,如:

SELECT x (ONLY WHERE x_type = '20'), y FROM Z # just example of what i am trying to do :) 

y_type是另一列,它的值是什麼上選擇Y或不依賴!,有沒有去做到這一點,或者我只是打錯門了?

+1

而對於那些行是'x_type'不是'20',究竟會在列中顯示'y'? –

+0

我不認爲你的解釋清楚你想做什麼。 – Balanivash

+0

return Null,如果有必要 – Dewan159

回答

1
SELECT CASE WHEN y_type = 20 THEN y ELSE NULL END As y -- replace y_type with column to check 
,.... -- other column list 
FROM yourtable 

你也可以使用一個帶有IN的CASE來表示多個值,例如。

SELECT CASE WHEN y_type IN (10,20) THEN y ELSE NULL END As y -- replace y_type with column to check 
,.... -- other column list 
FROM yourtable 
+0

你是男人... 謝謝...非常 – Dewan159

1
select case when x_type = '20' then 
x else '' end,y from z 
1

不知道的細節:

SELECT x 
    , CASE WHEN x_type = '20' THEN y 
           ELSE NULL 
     END AS y 
FROM Z 

或者你想要的很簡單:

SELECT x 
    , y 
FROM Z 
WHERE x_type = '20' 
+0

謝謝,......「簡單」的一個,不會與整個記錄一起返回!,我只是試圖控制選定的列... Y有時體積很大,所以,我不想稱它當它是類型= 20或某些!,找到我了嗎? – Dewan159

2

不,這是不可能的。您可以將列設置爲NULL,如果條件不滿足,雖然:

SELECT IF (x_type = 20, x, NULL) AS x 
      y 
FROM  Z 
+0

作品:),謝謝 – Dewan159

1

如果你想在x_type選擇,那麼你的SQL查詢應該是

SELECT x, y FROM Z where x_type = '20' 

如果你想約束y_type,那麼你可能想添加OR y_type = 'nn'到最後。我認爲你的問題是你是否需要在select子句和where子句中都有相同的列。答案是「不,你不需要。」