最近在作一个数据同步的跑批任务的时候,本身和测试人员这边都进行了测试没什么问题,可是上线后,发现数据量少了20万,线上查询的是76万多,可是咱们本身库里面却只有46万多,通过数据对比和摸索,发现有至少2个合同,从mysql的客户端里面是能够查询到的,可是代码里面去查询获取一个List<String>集合里面,用contains判断是否存在,,存则打印日志,可是通过屡次发现仍然没有打印对应的日志,又加入了存在的数据看是否存在,结果存在的数据的日志有打印,试验的2个未打印。mysql
如图可见个人SQL在mybatis里面是很简单明了的,sql
可是打印出来的数据的总量也是对的,就是不包含我验证的2个数据,可是客户端就是能查到mybatis
后通过一些列的排查和验证,测试,花费了2天的时间,终于发现,是个人SQL中,查询的时候加上distinct就会这样,去掉distincet就行了,验证的几个合同号也存在了,存入库的总的数据量也正常了,变成了76万多了。测试
可是这个现象的缘由,我是没弄太明白,distinct个人理解就是一个去重的,为何会影响我查询数据?并且我在本地和测试环境走的时候,都是20多万的数据,走的都是正常的,线上70多万数据就出现这种问题,很奇怪,但愿路过的大神可以解答一下~~~,感谢感谢!!!日志