请问我发的这两个sql为什么最后查出的数量不一致?

颖辉小居 发布于 05/23 09:37
阅读 106
收藏 0

 有一张表,里面保存了用户四要素(姓名,手机号,卡号,身份证)等信息,四要素信息可能会有重复的。我想查出所有用户的四要素(同一人的卡号,手机号不同算不重复的多条信息)。第一个sql 查出四要素不重复的数据量,第二个sql是查询出这些数据,结果前后数据条数不同。请问是为什么?

-- 3014846
SELECT COUNT(distinct ACCOUNTNO,IDCARD,ACCOUNTNAME,MOBILE) 四要素总数 from table where state = '0' AND BANKID = '0102';
-- 3014882
select distinct CONCAT(ACCOUNTNO,",",IDCARD,",",ACCOUNTNAME,",",MOBILE) 四要素 from table  where state = '0' AND BANKID = '0102';

 

加载中
0
魔力猫
魔力猫

distinct ACCOUNTNO,只是对 ACCOUNTNO 去重了吧。 

颖辉小居
颖辉小居
我网上搜索,是对所有查询的字段去重,distinct 必须写在最前面。
0
大魔大天王
大魔大天王

第一个去重和第二个 去重是不一样的,distinct  是去除 查询出来字段完全一样的数据,你第二个通过CONCAT 拼接了

颖辉小居
颖辉小居
第二个虽然拼接了,但是拼接以后去重,应该是一样的效果,毕竟一样的四要素去重后只会有一条。
0
颖辉小居
颖辉小居

我可能知道原因了,因为两个sql执行的时间间隔差几秒。而这个库是还在被使用的,所以可能这个时间段内有新的数据插入。o(╥﹏╥)o 

返回顶部
顶部