2

我对本教程页面中的这个示例感到困惑。http://www.postgresqltutorial.com/postgresql-subquery/

SELECT
    first_name,
    last_name
FROM
    customer
WHERE
    EXISTS (
        SELECT
            1
        FROM
            payment
        WHERE
            payment.customer_id = payment.customer_id
    );

你能告诉我子查询的意义吗?

我知道如果子查询至少返回一个结果,EXISTS 会将结果集转换为布尔值“true”。但是在子查询的 WHERE 子句中,它似乎总是“真”,所以总是会选择一行,所以 EXISTS 总是“真”。

该示例是否打算在子查询中执行此操作?

WHERE
    customer.customer_id = payment.customer_id

此外,我假设作为 WHERE 一部分的子查询将为每个“客户”运行一次。那正确吗?

谢谢。

4

1 回答 1

4

你是绝对正确的。这似乎是 PostgreSQL 文档中的一个错字……顺便说一下,这是一个相当混乱的错字。

关于最后一个问题,考虑为每个客户运行它也是一个好方法。

于 2013-10-24T03:34:08.417 回答