【发布时间】:2020-03-28 20:40:03
【问题描述】:
我刚开始使用数据库和 我有来自 PostgreSQL 教程的这个数据样本 https://www.postgresqltutorial.com/postgresql-sample-database/
我想查找在加拿大等地租借的所有电影类别。有没有办法在 SELECT.. 语句中不使用 SELECT 来做到这一点:
SELECT * FROM category WHERE category_id IN (
SELECT category_id FROM film_category WHERE film_id IN (
SELECT film_id FROM film WHERE film_id IN (
SELECT film_id FROM inventory WHERE inventory_id IN (
SELECT inventory_id FROM rental WHERE staff_id IN (
SELECT staff_id FROM staff WHERE store_id IN (
SELECT store_id FROM store WHERE address_id IN (
SELECT address_id FROM address WHERE city_id IN (
SELECT city_id FROM city WHERE country_id IN (
SELECT country_id FROM country WHERE country IN ('Canada')
)
)
)
)
)
)
)
)
)
我确定一定有我遗漏的东西。
【问题讨论】:
-
提示:
JOIN。和JOIN再次。 -
即使使用连接查询也会很昂贵。而且,PostgreSQL 不会自动创建索引来搜索子行的外键:您需要手动创建它们。
标签: sql postgresql