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