2016-01-22 81 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函数。 –