1

我不确定该问题的标题是什么,因此如果标题具有误导性,我深表歉意。

MovieID我在一个表中有两列Format(我还有更多,但这些是我关注的。

“格式”列中有两种类型的值:“DVD”和“蓝光”。我想选择只有 DVD 格式的电影。请注意,有多部电影具有蓝光和 DVD 格式,我不想显示这些值。请参阅下面的小提琴以获取我的数据示例。谢谢!!!

http://sqlfiddle.com/#!2

MovieID | Format
-----------------
1000    DVD
1000    DVD
1000    Blu-ray
1001    DVD
1001    DVD
1002    DVD
1003    DVD
1003    Blu-ray
1004    DVD

我要输出

MovieID
------------
1001    
1002     
1004     
4

2 回答 2

2

实现此目的的一种直接方法如下:

SELECT DISTINCT (MovieID)
FROM Movies m
WHERE Format='DVD'
AND NOT EXISTS (
    SELECT * FROM Movies mm WHERE mm.MovieID=m.MovieID AND mm.Format='Blu-ray'
)

这几乎是将问题的英文描述翻译成 SQL 语法。

于 2013-08-20T00:40:11.073 回答
1
select MovieID
from Table
where Format = 'DVD'
  and MovieID not in (select MovieID from Table where Format <> 'DVD')

如果它看起来效率低,请不要担心,如果您有适当的索引,一个好的 DBMS 会将其优化为高效的代码。

于 2013-08-20T00:40:20.407 回答