专门 在处理NULL值时我该如何选择使用哪一个?
答案 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
,但并非全部都可以。