设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2717|回复: 0

sql server 表连接

[复制链接]

36

主题

337

金钱

521

积分

初级用户

发表于 2019-12-12 15:40:01 | 显示全部楼层 |阅读模式

数据库操作中,我们需要的结果可能在两张表甚至多张表中,这时候就需要表连接操作,多表查询中的各个表之间的字段会存在连接,比如主外键关联,可以使用主外键来关联每张表。表连接方式有以下几种:
1、JOIN: 如果表中有至少一个匹配,则返回行
2、LEFT JOIN(左连接): 即使右表中没有匹配,也从左表返回所有的行
3、RIGHT JOIN(右连接): 即使左表中没有匹配,也从右表返回所有的行
4、FULL JOIN(全连接): 只要其中一个表中存在匹配,就返回行

下面用两个表演示下上面4种连接方式,两表数据为:
1.png

1. JOIN连接:如果表中有至少一个匹配,则返回行
执行SQL语句:
  1.   SELECT
  2.             stu.ID,
  3.             stu.StudentID,
  4.             stu.StudentName,
  5.             sco.ID,
  6.             sco.Score,
  7.             sco.StudentID      
  8.           FROM [BlogDemo].[dbo].[Student] stu
  9.           Join [BlogDemo].[dbo].[Score] sco On sco.StudentID=stu.StudentID
复制代码


结果如下,查询结果集只返回两表匹配StudentID字段相同行。
2.png

2.LEFT JOIN(左连接): 即使右表中没有匹配,也从左表返回所有的行
执行SQL语句:
  1. SELECT
  2.         stu.ID,
  3.         stu.StudentID,
  4.         stu.StudentName,
  5.         sco.ID,
  6.         sco.Score,
  7.         sco.StudentID      
  8.   FROM [BlogDemo].[dbo].[Student] stu
  9.   Left Join [BlogDemo].[dbo].[Score] sco On sco.StudentID=stu.StudentID
复制代码


结果如下,查询结果集只返回右表所有行,左表只返回与右表匹配行。
3.png

3. RIGHT JOIN(右连接): 即使左表中没有匹配,也从右表返回所有的行
执行SQL语句:
  1.   SELECT
  2.      stu.ID,
  3.      stu.StudentID,
  4.      stu.StudentName,
  5.      sco.ID,
  6.      sco.Score,
  7.      sco.StudentID      
  8.   FROM [BlogDemo].[dbo].[Student] stu
  9.   Right Join [BlogDemo].[dbo].[Score] sco On sco.StudentID=stu.StudentID
复制代码


结果如下,查询结果集只返回左表所有行,右表只返回与左表匹配行。
4.png

4. FULL JOIN(全连接): 只要其中一个表中存在匹配,就返回行
执行SQL语句:
  1.    SELECT
  2.         stu.ID,
  3.         stu.StudentID,
  4.         stu.StudentName,
  5.         sco.ID,
  6.         sco.Score,
  7.         sco.StudentID      
  8.   FROM [BlogDemo].[dbo].[Student] stu
  9.   FULL Join [BlogDemo].[dbo].[Score] sco On sco.StudentID=stu.StudentID
复制代码


结果如下,查询结果集返回两表的所有行。
5.png
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表