我不知道这个问题的标题是什么,所以如果标题有误导性,我向您道歉。
我在表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 发布于 2013-08-20 08:40:11
实现这一目标的一种简单方法如下:
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-20 08:40:20
select MovieID
from Table
where Format = 'DVD'
and MovieID not in (select MovieID from Table where Format <> 'DVD')不要担心它看起来效率低下,如果你有适当的索引,一个好的DBMS会把它优化成高效的代码。
https://stackoverflow.com/questions/18325186
复制相似问题