与=相比并不明显

时间:2013-06-13 10:03:35

标签: postgresql postgis postgresql-9.1

任何人都可以帮助我。我有以下postgresql查询:

SELECT count(*) FROM trackPointsA 
WHERE gid NOT IN (
SELECT a.gid 
FROM trackPointsA a, trackPointsB b 
WHERE a.the_geom = b.the_geom
AND b.datetime = a.time::timestamp with time zone 
GROUP BY a.gid ORDER BY a.gid
)

此查询产生0,这是正确的。但是,如果我将b.datetime = a.time::timestamp with time zone替换为b.datetime IS NOT DISTINCT FROM a.time::timestamp with time zone,则它不再产生0.为什么会这样?我需要使用IS NOT DISTINCT FROM版本,因为我有时会将null值视为不同的值。

请帮帮我。

1 个答案:

答案 0 :(得分:1)

a is not distinct from b相当于写作:

a = b or a is null and b is null

据推测,你有b.datetime和a.time都为空的行。

(我会添加一个关于索引使用情况的说明。自上次检查以来,这可能已经发生了变化,但在9.1天之后,与未扩展有所不同,而是将其视为一个独立的运营商。阻止它完全使用索引。)