2014-02-12 87 views
2

例如我有如下表:特定的條件下選擇列

id_1 | id_2 | id_3 | name 
1 |  |  | smith 
B |AF |2  | waterman 
C |3  |  | goldman 

我想下列ID的名稱(「1」,「AF」,「C」)。輸出應該是這樣的

id | name 
1 | smith 
AF | waterman 
C | goldman 

用下面的代碼,我能夠選擇的名字,但我不知道我怎樣才能選擇正確的id字段

SELECT name 
FROM table 
WHERE (id_1 IN ('1', 'AF', 'C')) OR 
(id_2 IN ('1', 'AF', 'C')) OR 
(id_3 IN ('1', 'AF', 'C')); 

謝謝!

+0

什麼是你希望的結果? –

+0

@echo_Me它說得那麼正確:'輸出應該看起來像這樣' –

+0

這*看起來像差的設計 – Strawberry

回答

5

您可以使用CASE

SELECT 
(CASE WHEN id_1 IN ('1', 'AF', 'C') THEN id_1 
WHEN id_2 IN ('1', 'AF', 'C') THEN id_2 
WHEN id_3 IN ('1', 'AF', 'C') THEN id_3 
ELSE 0 END) id 
,name 
FROM table 
WHERE (id_1 IN ('1', 'AF', 'C')) OR 
(id_2 IN ('1', 'AF', 'C')) OR 
(id_3 IN ('1', 'AF', 'C')); 
+1

你明白了!非常感謝 – user3017615