我正在做外接三表。我的数据库是sakila数据库。
我试图得到电影标题行从来没有被租用。所以,我像这样加入三张table。
SELECT f.title
FROM film f
LEFT OUTER JOIN inventory i ON f.film_id = i.film_id
LEFT OUTER JOIN rental r ON i.inventory_id = r.inventory_id
WHERE r.rental_ID IS NULL;
它返回行,但问题是我不知道这个查询是对的还是错的。有人能帮我吗?
2条答案
按热度按时间polkgigr1#
我觉得你应该使用
EXISTS
子句,因为它允许返回行或不返回行的子查询和测试is:oxcyiej72#
您正在从胶片表中选择胶片。您正在加入库存和租赁。然后你保留所有的零租金。这是一种所谓的反连接(anti-join),是一种用于弱dbms模拟的技巧
NOT EXISTS
或者NOT IN
这些数据库管理系统不能很好地运行的子句。因此,查询将为您提供所有没有库存或有库存但没有一次租赁的电影。或者短片:没有出租的电影。没错,你所说的你想要实现的。
另一种编写查询的方法是: