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 错误,其中的行会消失或消失,可能带有指向错误票或其他东西的链接?
似乎与我的另一个问题有关:
重新创建索引解决了问题。
现在我想知道如何检测损坏或不一致的索引以自动执行重建索引。
我是运行这样的查询:
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 错误,其中的行会消失或消失,可能带有指向错误票或其他东西的链接?
似乎与我的另一个问题有关:
重新创建索引解决了问题。
现在我想知道如何检测损坏或不一致的索引以自动执行重建索引。