4

我知道标题令人困惑,但这是我能解释的最好的。基本上我正在为一家拥有两家电影院的公司开发一个电影院列表网站。所以我有一个数据库,其中包含两个表“电影”和“列表”,其中包含两个电影院的数据。

如果电影名称出现在列表中,我正在尝试为一个电影院选择所有电影及其数据(因为两个电影院共享所有电影但在表格中但可能没有相同的电影放映)

这是我想出的,但我遇到了一个问题,因为当“SELECT DISTINCT”返回多个结果时,它显然无法与 tbl Films 上的 FilmName 匹配。如何检查 tblFilms 上所有 FilmNames 的这个值?

SELECT * 
FROM tblFilms
WHERE FilmName = (SELECT DISTINCT FilmName FROM tblListings WHERE Cimema = 1)
4

2 回答 2

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

于 2013-03-06T16:27:29.617 回答
1

如果您有表的模式,那将有所帮助。

也就是说,我相信您要查看的是 JOIN 关键字。(内/外/左/等)。这正是 JOIN 的目的(即你的头衔)。

于 2013-03-06T16:29:22.983 回答