在条件加入方面需要帮助
Need help in conditional join
有两个表:
EMP (EName, Loc_ID)
位置(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
有两个表:
EMP (EName, Loc_ID)
位置(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