【发布时间】:2020-08-06 15:44:28
【问题描述】:
您好,我在对组成的数据集练习一些 SQL 查询时,真的很想解决这个特殊的问题。
给定以下表格:
- 电影(MovieID,Title,ProducerName)
- DVD(MovieID,StoreID)
- 商店(商店ID,商店名称)
我不知道如何从制作人“BBC”(ProducerName = BBC)中检索只有电影的商店名称。我想尝试在连接中使用子查询和设置操作。
我主要靠猜测,因为我无法在任何地方测试查询,但非常感谢任何帮助。有没有更好的方法可以在不使用连接的情况下做到这一点?
select distinct(StoreName)
from STORE
where not exists (
(select distinct(Title)
from MOVIE JOIN DVDs
where DVD.StoreID == STORE.StoreID)
except
(select distinct(Title)
from MOVIE
where producerName = ‘BBC’))
【问题讨论】:
-
与您的问题无关,但是:
distinct不是函数。它始终适用于选择列表中的所有列。用括号括住其中一列不会改变任何东西并且是无用的。distinct (a),b与distinct a,(b)或distinct a,b相同。在这种情况下,EXISTS 条件的子选择中的 distinct 是完全没有必要的
标签: sql postgresql join select group-by