先来对比下这两组sql结构上有什么不同?
测试的sql demo
一:SELECT * FROM user_info WHERE create_time in (SELECT max( create_time ) FROM user_info GROUP BY telNumber)
二:SELECT * FROM user_info WHERE create_time not in (SELECT max( create_time ) FROM user_info GROUP BY telNumber)
测试的sql demo2
一:SELECT * FROM bg_resource_spot_list_old WHERE created_time in(SELECT max( created_time ) FROM bg_resource_spot_list_old GROUP BY spot_id);
二:SELECT * FROM bg_resource_spot_list_old WHERE created_time not in(SELECT max( created_time ) FROM bg_resource_spot_list_old GROUP BY spot_id);
这两组的结构相同,但是结果却不一样
in 和not in 不是相反的
因为表中的created_time有NULL ,not in 不起作用了,查一下你的数据
果然!
删除脏数据或补充上Null值,再次执行,生效!