【发布时间】:2020-05-11 16:21:00
【问题描述】:
有人可以简化我们使用相关嵌套子查询的方式和原因吗?我了解嵌套查询,但似乎无法理解相关嵌套查询的逻辑。
这是一个例子。我有两个用于电影租赁数据库的表。
Renting 表包含有关租借电影的信息。 Customers 表包含有关租用它的客户的信息。
这是我的嵌套查询:
SELECT *
FROM CUSTOMERS
WHERE CUSTOMER_ID IN
-- nested to find customers with less than 5 rentals
(SELECT CUSTOMER_ID
FROM RENTING
GROUP BY CUSTOMER_ID
HAVING COUNT(*) < 5)
这会输出 59 行。
这里是相关嵌套查询:
-- Select customers with less than 5 movie rentals
SELECT *
FROM CUSTOMERS as c
WHERE 5 >
(SELECT count(*)
FROM renting as r
WHERE r.customer_id = C.CUSTOMER_ID);
这会输出 66 行。
如果有人可以简化逻辑。有人告诉我嵌套相关查询是正确的,但我的第一个查询不应该也产生相同的结果和逻辑。如果是,为什么结果不一样?
提前致谢。
【问题讨论】:
标签: sql database postgresql correlated-subquery nested-queries