这是非常聪明或绝对无用的“where(table.field = NULL或null为null)”?

时间:2016-10-11 17:10:55

标签: sql oracle select null

我已经多次在查询中找到了代码段,几乎是FROM中的每个表。我找不到任何意义。有人可以帮忙吗?我的直觉告诉我它没用,但也许它是如此聪明,以至于我的头脑。例如:

Select a.field1, b.field2, c.field3
from table1 a
inner join table2 b on (a.field1 = b.id)
left join table 3 c on (b.field2 = c.id)
where a.field 3 = "VALUE"
and ( a.field1 = NULL or NULL IS NULL)
and ( b.field2 = NULL or NULL IS NULL)

1 个答案:

答案 0 :(得分:2)

NULL IS NULL始终为true,因此将其与任何其他条件与or运算符组合也会导致为true,从而使最后两个条件无效。可以在没有它们的情况下重写此查询:

Select a.field1, b.field2, c.field3
from table1 a
inner join table2 b on (a.field1 = b.id)
left join table 3 c on (b.field2 = c.id)
where a.field 3 = "VALUE"