2016-01-22 75 views
0

有兩個表:需要幫助有條件加入

  1. EMP(ENAME,Loc_ID)

  2. 位置(Loc_ID,LOC)

表:EMP

EName  Loc_ID 

John   T 
Ron   H 
Seth   D 
{NULL}  I 

表:位置

Loc_ID  Loc 

T   Tokyo 
H   Houston 
D   Dallas 
I   Irving 

問題:如果易名不爲空:選擇易名,並Loc_ID。 如果易名是NULL,選擇易名,和LOC

期望輸出:如果你正在使用MySQL

EName  New_Loc 

John   T 
Ron   H 
Seth   D 
{NULL}  Irving 

回答

1

下面的查詢假定兩個Loc_ID和10C是VARCHAR字段(我認爲這是唯一的,這將工作方式):

(SELECT e.EName, l.Loc_ID as New_Loc FROM EMP AS e 
JOIN loc AS l ON e.Loc_ID = l.Loc_ID 
    WHERE e.EName IS NOT NULL) UNION 
(SELECT e.EName, l.Loc AS New_Loc FROM EMP AS e 
JOIN loc as l ON e.Loc_ID = l.Loc_ID 
WHERE e.EName IS NULL) ORDER BY EName 
0

,還有就是IF函數:

SELECT EName, IF(EName, EName, Loc) AS New_Loc 

我敢肯定其他SQL實現中也有等價物。

+0

在大多數其它SQL方言這就是所謂的COALESCE函數。 –