如何从很多表中获取所有标题?

时间:2013-08-15 12:25:24

标签: mysql

我有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个表..

2 个答案:

答案 0 :(得分: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将多个查询与相同的列数组合在一起,并将其作为一个结果集返回。

答案 1 :(得分: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在评论中所说,你的架构似乎设计得很糟糕。你应该只有一个电影表,一个不同的类别表以及这个类别和电影表之间的关系。