1

我有 3 个电影类别和每个类别一张表。一张叫动作,一张叫喜剧,一张叫恐怖。每个表都有“标题”和“状态”。如何从“状态”为“新”的所有表中选择所有标题?

我试过这样:

SELECT
    action.title,
    comedy.title,
    horror.title
FROM
    action,
    comedy,
    horror
WHERE
    action.status = 'new' OR
    comedy.status = 'new' OR
    horror.status = 'new'

但我得到了所有的头衔,即使状态不是新的。我尝试了 JOIN,但我不知道如何以正确的方式加入 3 个表。

4

2 回答 2

2

尝试使用关键字UNION

SELECT action.title
FROM action
WHERE action.status = 'new' 
UNION
SELECT comedy.title
FROM comedy
WHERE comedy.status = 'new' 
UNION
SELECT horror.title
FROM horror
WHERE horror.status = 'new'

UNION将多个具有相同列数的查询组合起来,并将其作为一个结果集返回。

于 2013-08-15T12:28:39.667 回答
1

您可以分别查询每个表的new电影标题并将UNION它们一起查询 -

SELECT  action.title
FROM    action
WHERE   action.status = 'new'

UNION

SELECT  comedy.title
FROM    comedy
WHERE   comedy.status = 'new'

UNION

SELECT  horror.title
FROM    horror
WHERE   horror.status = 'new'

但正如 Mat 在评论中所说,您的架构似乎设计得很糟糕。您应该只有一个电影表,具有不同的类别表以及此类别与电影表之间的关系。

于 2013-08-15T12:28:18.333 回答