在表1和表2中添加具有匹配id的新列

时间:2016-02-27 10:03:53

标签: sql join case

我有两张桌子, 在table1中我有5行和 在table2 3行

表1:

#no---Name---value
1-----John---100
2-----Cooper-200
3-----Mil----300
4-----Key----200
5-----Van----300

表2:

#MemID-#no---FavID  
19-----1-----2   
21-----1-----3
22-----2-----5

现在的预期结果:

#no---name---value---MyFav
1-----John---100-----NULL
2-----Cooper-200-----1
3-----Mil----300-----1
4-----Key----200-----NULL
5-----Van----300-----NULL

1表示 - 我的最爱 MyFav - 新专栏(别名) 这是预期的结果,请建议如何获得它。

2 个答案:

答案 0 :(得分:0)

只需使用自然连接,它将根据需要使用您的主键作为中介来连接两个表。在您的情况下,我认为主键是#no

有关自然加入的详情,请访问SQL Joins

答案 1 :(得分:0)

我想我理解逻辑。如果该行是John的最爱,您希望MyFav被标记为1。您可以使用left join和更多过滤来执行此操作:

select t1.*,
       (case when t2.#no is not null then 1 end) as MyFav
from table1 t1 left join
     table2 t2
     on t1.#no = t2.FavId and
        t2.#no = (select tt1.#no from table1 tt1 where tt1.Name = 'John');