在写SQL中遇见一个奇怪的问题
对于
select DISTINCT commodity_id from (select * from t_commodity_order order by t_commodity_order.update_time desc) AS D
能够查到结果:
而
select A.*
from t_commodity_info A where A.commodity_id in (
select DISTINCT commodity_id from (select * from t_commodity_order order by t_commodity_order.update_time desc) AS D
);
查询结果为空
不知道为啥,NOT IN能够查到结果,因为双重否定为肯定所以可以通过两层not in实现 in
后来经过同事排查发现,子查询所用比较字段在两表中使用不同字符集,导致查不出数据,使用相同数据集之后查询成功,但不知道为什么NOT IN 在字符集不同时也能查询的原因