这个问题在这里已经有答案了:
在同一列上选择多个where条件(11个答案)
10个月前关门了。
我有一个数据库。我想看有英文和西班牙文字幕的电影。我想这样做sql查询,但它不工作。
SELECT name,language FROM DvD
JOIN Subtitles ON Dvd.dvdID=Subtitle.dvdID
where language='EN' and language='ES';
但当我试着这样做的时候,它起作用了。
SELECT name,language FROM DvD
JOIN Subtitles ON Dvd.dvdID=Subtitle.dvdID
where language='EN' or language='ES';
2条答案
按热度按时间rryofs0p1#
如果您想要同时具有以下两种功能的DVD,则实际上需要聚合:
你的版本是返回DVD有英语或西班牙语,但不一定两者都有。
5jdjgkvh2#
您的第二个查询不符合您的要求。它检查dvd是否至少有两种语言中的一种(这与两种语言都有不同)。
您可以使用exists检查两者:
带索引的
subtitles(dvdID, language)
,此选项应该比使用联接和聚合的替代方法更有效(尽管写起来有点长)。也可以使用聚合suqbuery执行此操作: