注册 登录
编程论坛 MySQL论坛

DISTINCT 问题,疑惑中。。。

batuo001 发布于 2019-06-13 09:19, 4217 次点击

查询目的:查询t_sales_entry_detail表中 字段t_goods_id 需要去重;
第一条sql 查询出 2547条
第二条sql 查询出 2533条
原则上预期应该是一样的结果,第二条竟然少了某些值,不知原因



1.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';


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') ;
2 回复
#2
林月儿2019-06-13 10:04
连表查询和存在性查询的区别还是蛮大的,前者会涉及不对应则补齐的操作
后者属于嵌套的方式,不存在补齐流程,效率上取决于中间表的数据量了,连表笛卡尔积可能大一点
#3
davidfang932020-11-17 15:37
将第一个查询中的 LEFT JOIN 改为 INNER JOIN ,结果就一样了
1