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 zoneb.datetime IS NOT DISTINCT FROM a.time::timestamp with time zonethen 它不再产生 0。这是为什么呢?我需要使用该IS NOT DISTINCT FROM版本,因为有时我有想要视为不同值的空值。

请帮我。

4

1 回答 1

3

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

a = b or a is null and b is null

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

(我会添加一个关于索引使用的注释。自从我上次检查以来,这可能已经改变了,但是在 9.1 天,与没有扩展不同,而是将其视为本身的操作符。这阻止了它完全使用索引。)

于 2013-06-13T10:10:50.310 回答