在表中选择all表,其中表1中的列存在于另一个表中,第二列等于第二个表中的变量

时间:2013-03-06 16:26:37

标签: sql select

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

如果电影名称出现在列表中,我试图选择所有电影和他们的数据用于一个电影院(因为两个电影院共享所有电影,但在表中但可能没有相同的电影显示)

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

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

2 个答案:

答案 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的意图(即你的头衔)。