在条件加入方面需要帮助

Need help in conditional join

有两个表:

  1. EMP (EName, Loc_ID)

  2. 位置(Loc_ID,位置)

Table: 电磁脉冲

EName      Loc_ID

 John         T
 Ron          H
 Seth         D
 {NULL}       I

Table:位置

Loc_ID        Loc

T           Tokyo
H           Houston
D           Dallas
I           Irving

问题:如果Ename不为NULL:Select Ename,并且Loc_ID。 如果 Ename 为 NULL,Select Ename,并且 Loc

预期输出:

EName      New_Loc

 John         T
 Ron          H
 Seth         D
 {NULL}       Irving

如果你用的是MySQL,有IF函数:

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

我确定在其他 SQL 实现中有等效项。

以下查询假定 Loc_ID 和 Loc 都是 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