MySQL查询主表和" Child"表

时间:2015-07-30 03:20:49

标签: mysql

* forum
forum_id
forum_subject
forum_description

* forum_message
forum_message_id
forum_id
forum_message_description

我希望通过关键字搜索它将在forum_subject和forum_message_description上搜索

我提出了显而易见的事实:

SELECT forum_subject, forum_description, forum_id FROM forum WHERE forum_subject LIKE '%keyword%'

但我似乎无法弄明白如何在forum_message上搜索相同的查询并仅从论坛表中返回信息......可能是一个子选择?

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

你正在寻找的是一个完整的外部联接,但遗憾的是,MySQL不直接支持这样的命令。但是,可以使用UNION模拟它。

SELECT forum.forum_id,forum.forum_subject,forum.forum_description
FROM forum 
WHERE forum.subject LIKE '%keyword%'

UNION

SELECT forum.forum_id,forum.forum_subject,forum.forum_description
FROM forum
INNER JOIN forum_message ON forum_message.forum_message_id = forum.id
WHERE forum_message.forum_message_description LIKE '%keyword%'

第一个查询将从论坛表中返回您的结果,并按主题列进行过滤。第二个查询还将返回论坛表格中的结果,但会使用forum_message表格中的匹配行进行过滤,该行具有与您的关键字类似的forum_message_description。 UNION命令组合来自两个查询的行并删除重复项。