* 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上搜索相同的查询并仅从论坛表中返回信息......可能是一个子选择?
感谢您的帮助
答案 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命令组合来自两个查询的行并删除重复项。