为何这样查询跟直接查询的数量不一样
为什么这样查询跟直接查询的数量不一样
select a.yfks+b.ypid as yybm,a.ypmc,a.pddh,a.yplsj,a.pdrq from yf_pddj a
left join yf_dtkc b on(a.yfks = b.yfks and a.yphh = b.yphh
一直没明白,left join不是按 左连接为基础的? 为什么这样查询出来的数量跟直接查询yf_pddj的数量不一样?
看到里面的数据有些都是重复的,不知道是怎么个原因
------解决思路----------------------
左连接以基础的,并不代替数量会和左边的边一样
如果右表在连接条件和与左表匹配的有一条以上,那么左连接就会有重复的了
------解决思路----------------------
左连接逻辑执行顺序如下:
1.迪卡尔连接 数据条数为 a*b
2.匹配on 之后的列
3.加入左表不匹配的行
只有on 之后两个表是1对1的才会出现 ,总数与单独查询左表的数据数一样
select a.yfks+b.ypid as yybm,a.ypmc,a.pddh,a.yplsj,a.pdrq from yf_pddj a
left join yf_dtkc b on(a.yfks = b.yfks and a.yphh = b.yphh
一直没明白,left join不是按 左连接为基础的? 为什么这样查询出来的数量跟直接查询yf_pddj的数量不一样?
看到里面的数据有些都是重复的,不知道是怎么个原因
------解决思路----------------------
左连接以基础的,并不代替数量会和左边的边一样
如果右表在连接条件和与左表匹配的有一条以上,那么左连接就会有重复的了
------解决思路----------------------
左连接逻辑执行顺序如下:
1.迪卡尔连接 数据条数为 a*b
2.匹配on 之后的列
3.加入左表不匹配的行
只有on 之后两个表是1对1的才会出现 ,总数与单独查询左表的数据数一样