右联接不返回空

时间:2019-06-17 23:03:43

标签: sql-server

我正在尝试使用RIGHT连接获取NULL值。例如。

-T1-

AppId   |  PhoneTypeID   | PhoneNumber
   10   |        1       | xxx-xxx-xxxx
   12   |        2       | xxx-xxx-xxxx
   13   |        3       | xxx-xxx-xxxx

-T2-

   Id  | Description
   1   | Home
   2   | Work
   3   | Mobile

我正在使用以下查询。

SELECT *
FROM T1
RIGHT OUTER JOIN T2 ON T1.PHONE_TYPE_ID = T2.Id AND T2.Id = 1

期待

-T3-

AppId  | PhoneTypeID  | PhoneNumber  | Id  | Description
   10  |       1      | xxx-xxx-xxxx | 1   | Home
   12  |    NULL      | NULL         | 1   | Home
   13  |    NULL      | NULL         | 1   | Home

2 个答案:

答案 0 :(得分:0)

尝试使用此方法获取预期的记录集:

stdClass

我虽然不了解T3.Id和T3.Description的目的?谢谢

答案 1 :(得分:0)

您的查询与 RIGHT JOIN 不符。您总是从 T1 返回 AppId ,但同一表中只有一些 PhoneNumber ,没有 JOIN 可以做则需要有条件的( CASE )。

例如,此查询将完全返回您的预期结果:

select T1.AppId,
       case when T1.PhoneTypeID = T2.Id then T1.PhoneTypeID else null end as PhoneTypeID,
       case when T1.PhoneTypeID = T2.Id then T1.PhoneNumber else null end as PhoneNumber,
       T2.Id,
       T2.Description
from T1
     inner join T2 on T2.ID = 1