注册 登录
编程论坛 MySQL论坛

mysql 问题 这两个sql 结果不同,不知为何,请各位大神指点!

batuo001 发布于 2019-06-12 17:01, 6438 次点击
SELECT DISTINCT k1.t_goods_id from t_sales_entry_detail k1  LEFT JOIN t_sales_entry k2 on k1.t_sales_entry_id =k2.id where k2.sys_office_id='902cb4b0f15c4c3d9695c718823f2ec7' and k2.document_status='2';
SELECT  DISTINCT k1.t_goods_id from t_sales_entry_detail k1 where EXISTS (
   select k2.id from t_sales_entry k2 where k2.id = k1.t_sales_entry_id and  k2.sys_office_id='902cb4b0f15c4c3d9695c718823f2ec7' and k2.document_status='2') ;
5 回复
#2
林月儿2019-06-12 23:28
这里是java板块知道吗?
#3
zzq6733881402019-11-14 16:32
第一个涉及到了 left join ,会议左边表为基准来展示数据,会出现左边表有字段,右边没有,显示null;左边没有字段,右边有的字段直接不显示。
你把 left join 改 union all 试试,本人小白,不保证正确,还请大神们多多指教
#4
lsy28861732020-04-22 10:07
exists 只展示有关联的数据(类似inner join),与left join不一样,
简单说
A表    B表
1      1
2      3
3
select a.*,b.* from a left join b on a.id=b.id
1    1
2    null
3    3

select a.*,b.* from a inner join b on a.id=b.id
1    1
3    3

select * from a where exists (select 1 from b where a.id=b.id)
1
3
#5
davidfang932020-11-17 15:33
回复 3楼 zzq673388140
left join 是连接查询,union all 是联合查询
#6
davidfang932020-11-17 15:33
回复 楼主 batuo001
将left join 改为 inner join
1