2014-02-12 38 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