【发布时间】:2014-06-12 09:24:09
【问题描述】:
请参阅以下pastebin 以获取完整示例。为什么Query 2 返回的结果与Query 1 不同?我认为Query 2 具有相关的子查询,因此它们应该每行执行一次,但它的工作方式就像子查询与OR 而不是AND 连接。
-- Query 1
SELECT id
FROM parent p
WHERE EXISTS(
SELECT 1
FROM child
WHERE child.parent_id = p.id AND child.field_1 = 1 AND child.field_2 = 1
)
-- Query 2
SELECT id
FROM parent p
WHERE EXISTS(
SELECT 1
FROM child
WHERE child.parent_id = p.id AND child.field_1 = 1
) AND EXISTS(
SELECT 1
FROM child
WHERE child.parent_id = p.id AND child.field_2 = 1
)
Query 1 的实际结果:
id
--
2
3
4
Query 2 的实际结果:
id
--
2
3
4
5
【问题讨论】:
标签: postgresql exists