标签
SQL Server
Redis
MySQL
其它
Oracle
外部链接
SQL Server 中几种Join的使用

数据源

用户表:


客户表:

用户客户关联表

1、INNER JOIN使用示例

SELECT     per.Name 用户, cur.Name 客户
FROM       Test.dbo.[User] per
INNER JOIN Test.dbo.UserCustomerRelation rela ON per.Id = rela.UserId
INNER JOIN Test.dbo.Customer cur ON cur.Id = rela.CustomerId

结果:1.png

说明:INNER JOIN 链接方式需要左右两边同时满足条件才输出结果

2、LEFT JOIN使用示例

SELECT     per.Name 用户, cur.Name 客户
FROM       Test.dbo.[User] per
LEFT JOIN Test.dbo.UserCustomerRelation rela ON per.Id = rela.UserId
LEFT JOIN Test.dbo.Customer cur ON cur.Id = rela.CustomerId

结果:1.png

说明:LEFT JOIN链接方式允许右边为NULL,即右边表没有匹配到关联结果的话使用NULL来代替

3、RIGHT JOIN使用示例

SELECT     per.Name 用户, cur.Name 客户
FROM       Test.dbo.[User] per
RIGHT JOIN Test.dbo.UserCustomerRelation rela ON per.Id = rela.UserId
RIGHT JOIN Test.dbo.Customer cur ON cur.Id = rela.CustomerId

结果:1.png

说明:RIGHT JOIN和LEFT JOIN一样可以允许关联不存在输出,它允许左边表不存在,使用NULL代替

4、FULL  JOIN使用示例

SELECT     per.Name 用户, cur.Name 客户
FROM       Test.dbo.[User] per
FULL  JOIN Test.dbo.UserCustomerRelation rela ON per.Id = rela.UserId
FULL  JOIN Test.dbo.Customer cur ON cur.Id = rela.CustomerId

结果:1.png

说明:FULL  JOIN是RIGHT JOIN和LEFT JOIN的结合体,它只要左右两边任意一张表存在结果就可以输出,没有匹配到的用NULL来代替

备注:有些写法用FULL OUTER JOIN,不使用OUTER关键字只是简写,不会影响查询的结果。 

扫一扫手机看
点击排行
订阅号
...