yk156511 发表于 2021-12-20 09:28

SQL


这个BB查出来是120条记录的话。 我为了新显示几个字段加了一个左连接,查询结果变成了123条。
left join on只用djkid为唯一条件的话,结果更多达到了325条。
这个是什么原因啊。 不能用left join吗?

mmqwer 发表于 2021-12-20 09:38

left join   right joininner join   这三个的区别建议复习一下

qiaopf888 发表于 2021-12-20 09:43

mmqwer 发表于 2021-12-20 09:38
left join   right joininner join   这三个的区别建议复习一下

老哥一语中的

qqrate 发表于 2021-12-20 09:46

325:123问题在于bb.a=aa.djsj这个条件所限制,两个表肯定有202行不一样的,语句本身没错,是你有必要根据实际需要去使用这一条件?不然结果肯定不一样

yk156511 发表于 2021-12-20 10:32

mmqwer 发表于 2021-12-20 09:38
left join   right joininner join   这三个的区别建议复习一下

inner join 执行出来和left join 一样的结果。 right 肯定是不行的 我要左边做主表,不是你说的这么回事。 inner 早就试过了

a397555462 发表于 2021-12-20 11:35

一个是汇总过的

破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(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

yk156511 发表于 2021-12-20 13:24

破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( ...

和我的执行结果一模一样。

破wu解 发表于 2021-12-21 09:21

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条也会包含进去的.
这两个条件 你看看 需不需要考虑下?

chengxuyuan01 发表于 2021-12-21 10:58

left join 左连
inner join 内连接
right join 右连
你这两个表里面的数据是不一致的,主表中对应次表的信息不止一条,你看下次表是不是这样
页: [1] 2
查看完整版本: SQL