在条件连接方面需要帮助

时间:2016-01-22 21:13:46

标签: jointable

有两个表:

  1. EMP(EName,Loc_ID)

  2. 位置(Loc_ID,Loc)

  3. 表: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
    

2 个答案:

答案 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实现中有等价物。