SELECT 有一个额外的 AND 术语怎么会产生比没有它更多的行?

How can a SELECT with an additional AND term yield more rows than without it?

我是运行这样的查询:

SELECT distinct me.*
    FROM me
    LEFT JOIN has_things ON has_things.me_id = me.id
    LEFT JOIN has_refs ON has_refs.thing_id = has_things.thing_id
    WHERE
        has_refs.ref_id = 456
        AND me.id=123;

在第一个变体中,我省略了最后一行 AND me.id = 123 并获得了 0 行,而在第二个变体中我包含了该行并获得了 1 行。

在最后一行是 AND me.id >= 123 的另一个变体中,我得到 0 行。

我正在使用psql查询数据库。

我错过了什么,我该如何解决? 我以为AND条件只能减少匹配数

有谁知道这样的 PostgreSQL 错误,其中的行会消失或消失,可能带有指向错误票或其他东西的链接?

似乎与我的另一个问题有关:

重新创建索引解决了问题。

现在我想知道如何检测损坏或不一致的索引以自动执行重建索引。