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
    );

サブクエリのポイントを教えてください。

サブクエリから返された結果が少なくとも 1 つある場合、EXISTS は結果セットをブール値の「true」に変換することを理解しています。しかし、サブクエリの WHERE 句では、常に「true」になるように見えるため、行は常に選択されるため、EXISTS は常に「true」になります。

その例は、サブクエリでこれを行うことを意図していましたか?

WHERE
    customer.customer_id = payment.customer_id

また、WHERE の一部であるサブクエリは、「顧客」ごとに 1 回実行されると想定しています。そうですか?

ありがとう。

4

1 に答える 1

4

あなたは、絶対に正しい。これは PostgreSQL ドキュメントのタイプミスのようです...ところで、かなり紛らわしいものです。

最後の質問については、顧客ごとに実行することを考えるのも良い方法です。

于 2013-10-24T03:34:08.417 に答える