我对本教程页面中的这个示例感到困惑。 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将始终为“true”。
这个例子是否意味着在子查询中执行此操作?
WHERE
customer.customer_id = payment.customer_id
此外,我假设作为WHERE一部分的子查询将为每个“客户”运行一次。是吗?
感谢。
答案 0 :(得分:4)
你是对的。这似乎是PostgreSQL文档中的一个拼写错误......顺便说一下,这是一个令人困惑的问题。
关于最后一个问题,考虑为每个客户运行它也是一个很好的方法。