sql server关联查询 on where等学习记录

1.首先说一下恒等
恒等我也忘记在哪里看的了,指的是on 1=1就叫恒等
sql语句:
select ta.ida,tb.idb,tb.ida,tb.idc from ta left join tb on 1=1
on 1=1相当于 将左表(ta)的数据每一条数据 去关联查询右表(tb)的每一条数据
表a,表b的数据 表c基本和表a一致

2.正常的关联查询(左连接) 每个on后面都加上关联条件
select * from ta left join
tb on ta.ida=tb.ida left join tc on tc.idc=tb.idc
查询结果

每个表各自的数据:

因为tb中的idc有4,而tc没有4,所以查出的表c的数据(存在的)应该有五条,这与查询数据一致,最后两行数据,一个是tc无数据显示为null,另一个是因为tb,tc都没有数据,所以就显示为null
所以得出 左连接是以左表为主,然后拿着关联的键,到每个表去匹配数据,没有数据则为null

1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。
2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。

posted @ 2022-02-15 22:09  rookiexwang  阅读(364)  评论(0编辑  收藏  举报