SQL
这个BB查出来是120条记录的话。 我为了新显示几个字段加了一个左连接,查询结果变成了123条。
left join on只用djkid为唯一条件的话,结果更多达到了325条。
这个是什么原因啊。 不能用left join吗?
left join right joininner join 这三个的区别建议复习一下 mmqwer 发表于 2021-12-20 09:38
left join right joininner join 这三个的区别建议复习一下
老哥一语中的 325:123问题在于bb.a=aa.djsj这个条件所限制,两个表肯定有202行不一样的,语句本身没错,是你有必要根据实际需要去使用这一条件?不然结果肯定不一样 mmqwer 发表于 2021-12-20 09:38
left join right joininner join 这三个的区别建议复习一下
inner join 执行出来和left join 一样的结果。 right 肯定是不行的 我要左边做主表,不是你说的这么回事。 inner 早就试过了 一个是汇总过的
select aa.bdbzzqse,aa.slid,aa.zgzqe,aa.djsj from bdc_regn_dy aa
join (select distinct djkid, (max(djsj)) as A from bdc_regn_dy
where djbzt = '0'
and .....--两个时间条件 你补充下试试看
group by djkid
having count(djsj) >1
)bb
on bb.djkid =aa.djkid
and bb.A = aa.djsj;
不知道 这样是不是符合你的需求:rggrg 破wu解 发表于 2021-12-20 13:13
select aa.bdbzzqse,aa.slid,aa.zgzqe,aa.djsj from bdc_regn_dy aa
join (select distinct djkid, (max( ...
和我的执行结果一模一样。 select aa.bdbzzqse,aa.slid,aa.zgzqe,aa.djsj from ( select * from bdc_regn_dywheredjbzt = '0'group by djkid having count(djsj) >1 )aa
join (select distinct djkid, (max(djsj)) as A from bdc_regn_dy
where djbzt = '0'
and .....--两个时间条件 你补充下试试看
group by djkid
having count(djsj) >1
)bb
on bb.djkid =aa.djkid
and bb.A = aa.djsj;
看了下 区间不一样了
① 一个表数据是只包含 djbzt = '0' 另一个是包含 '0' 和 非零的数据
②一个之查看数据条数大于1条的 另一个表数据是1条也会包含进去的.
这两个条件 你看看 需不需要考虑下? left join 左连
inner join 内连接
right join 右连
你这两个表里面的数据是不一致的,主表中对应次表的信息不止一条,你看下次表是不是这样
页:
[1]
2