not in 前面/后面存在null值时的处理

表声明

order_header表中有ship_method列;

ship_method_map表中ship_method为主键列。

需求

找出order_header表中所有ship_method不在ship_method_map表中的列。

SQL

not in实现:

select count(*) from order_header a where a.ship_method not in (select distinct ship_method from ship_method_map)

left join实现:

select count(*) from order_header a left join ship_method_map b on a.ship_method = b.ship_method where b.ship_method is null and a.ship_method is not null

说明

排除了order_header表中所有ship_method不在ship_method_map表中的列;而且order_header表中所有ship_method为null的列也被排除了。

上一篇:Java:设计类的继承关系时的技巧


下一篇:orm fluentdata使用相关文章