有两个表:
EMP(EName,Loc_ID)
位置(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
问题:如果Ename不为NULL:选择Ename和Loc_ID。 如果Ename为NULL,请选择Ename,然后选择Loc
预期输出:
EName New_Loc
John T
Ron H
Seth D
{NULL} Irving
答案 0 :(得分:1)
以下查询假设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
答案 1 :(得分:0)
如果您使用的是MySQL,则有IF功能:
SELECT EName, IF(EName, EName, Loc) AS New_Loc
我确信在其他SQL实现中有等价物。