我知道标题令人困惑,但它是我能解释的最好的。基本上我正在为拥有两家电影院的公司开发一个电影院列表网站。所以我有一个数据库,其中包含两个表“Films”和“Listings”,其中包含两个电影院的数据。
如果电影名称出现在列表中,我试图选择所有电影和他们的数据用于一个电影院(因为两个电影院共享所有电影,但在表中但可能没有相同的电影显示)
这是我提出的问题,但我遇到了一个问题,因为当“SELECT DISTINCT”返回多个结果时,它显然无法与tbl Films上的FilmName匹配。 如何检查tblFilms上所有FilmNames的值?
SELECT *
FROM tblFilms
WHERE FilmName = (SELECT DISTINCT FilmName FROM tblListings WHERE Cimema = 1)
答案 0 :(得分:15)
如果子查询返回多个值,则使用IN
SELECT *
FROM tblFILMS
WHERE FilmName IN (SELECT DISTINCT FilmName FROM tblListings WHERE Cimema = 1)
解决thius的另一种方法是使用JOIN
(我推荐)
SELECT DISTINCT a.*
FROM tblFILMS a
INNER JOIN tblListings b
ON a.FilmName = b.FilmName AND
b.Cimema = 1
为了加快查询执行速度,请在两个表上的INDEX
上添加FilmName
。
答案 1 :(得分:1)
如果您有表格的模式,那将有所帮助。
那就是说,我相信你想要看的是JOIN关键字。 (内/外/左/等)。这正是JOIN的意图(即你的头衔)。