T-SQL多表联接查询
多表联接
SQL SERVER是关系型数据库系统,在数据规范化的设计条件下,
要查询一份有意义的数据内容一般需要联接(JOIN)多个表,T-SQL
提供了联接语句,实现表的水平联接,结果会包含所有表的所有字
段,如果是需要垂直联接合并表,需要使用 Union,Except和
INTERSECT等命令,
1、水平联接
格式1
SELECT * FROM TABLE1,TABLE2 WHERE TABLE1.A = TABLE2.A
格式2
SELECT * FROM TABLE1 JOIN TABLET2 ON TABLE1.A = TABLE2.A
新版本一般是格式2,格式1是老板版的sql语句。两者都可以使用。
联接类型包括
内部联接(inner join)
外部联接(outer join)
交叉联接(cross join)
(1)、内部链接(inner join)
查询员工当年的销售总额度。
逻辑上,执行联接语句,会临时产生一个"联接表",通过笛卡尔积列出两个表所有的组合。
通过联接条件,筛选数据。
另外,所有行引用必须准确。如果多个表中有同名的列,必须加表名限定。同时为了简便,可以将表名起简单的别名。
(2)、外部联接(outer join)
外联接主要用于两个表不一定含有相同的数据的情况,如上面,如果新来的员工还没有订单,还没有销售额度,如果
利用内联接,就会数据不完整或者完美。外部联接就可以实现这个功能。
外部联接包含三种情况,
LEFT OUTER JOIN
RIGHT OUTER JOIN
FULL OUTER JOIN
一般会省去 outer,
left join,表示左边的基表数据完整行,
right join ,表示右边基表的数据完整行
full join ,表示两边所有的完整行。
full join 后面有具体应用在介绍
3、Cross join
略
除了上面经常使用联接,还有几种特殊的应用
4、表自身联接(self join)
如果需要查询的表时自身记录间的比较,需要用到self join。
例如,查找同一个城市的员工
以上的情况实际开发中会很少用。员工,主管同属于员工表,
但是员工一般会对应一个主管,这个经常用到。
查看今年与去年的订单的数量,并对比。如下图
主要关注红框的表示,其他部分,后面介绍。
posted on 2026-05-24 16:56 panpeng666 阅读(33) 评论(0) 收藏 举报
浙公网安备 33010602011771号