NOT EXIST和NOT IN有什么区别?

时间:2019-03-21 17:50:43

标签: mysql sql

专门 在处理NULL值时我该如何选择使用哪一个?

1 个答案:

答案 0 :(得分:1)

您应始终对子查询使用not exists。它以直观的方式处理NULL值。

如果您有:

where t.id not in (select x.id from x)

并且x.id ever NULL,那么根本没有行返回。这是因为定义了NULL值。

等效公式:

where not exists (select 1 from x where x.id = t.id)

表现如您所愿。

not exists的另一个优点是您可以一次处理多个列:

where not exists (select 1 from x where x.id = t.id and x.date = t.date)

某些数据库支持元组,使您可以将其表示为not in,但并非全部都可以。