【问题标题】:Search over fields from related tables从相关表中搜索字段
【发布时间】:2025-12-21 11:30:16
【问题描述】:

这是表topics

  • int id
  • 字符串label

这是表articles

  • int id
  • 字符串label
  • 字符串content
  • int topic_id(外键)

这是表comments

  • int id
  • 字符串content
  • 字符串article_id(外键)

现在,我想实现一个搜索功能,该功能会生成所有包含搜索词 (LIKE %term%) 的文章

  • 文章的labelcontent
  • 文章主题的label
  • content 属于这篇文章的 cmets

我认为解决方案可能与 JOINS 有关,但我完全不知道该怎么做。有人可以帮忙吗?

非常感谢任何帮助!

【问题讨论】:

  • 您是否考虑并排除了使用 FULLTEXT 搜索?它可能很好地满足您的需求。
  • @O.Jones 他的问题是关于如何组合表格,而不是如何匹配字段本身。
  • 是的,它与 JOIN 有关。如果您不知道如何进行 JOIN,则需要阅读好的 SQL 教程,这不是编程学校。

标签: mysql sql database


【解决方案1】:

我猜您是新手,不想实现“全文搜索”解决方案。因此,一个简单的 SQL 将是:

select a.*
  from topics t
  join articles a on a.topic_id = t.id
  join comments c on c.article_id = a.id
  where a.label like '%term%'
     or a.content like '%term%'
     or t.label like '%term%'
     or c.content like '%term%'

请注意,在处理大量或主题、文章或 cmets 时,此 SQL 解决方案的性能不是很好。但是,它会运行良好,并且会返回您想要的文章。

【讨论】:

  • 完美!谢谢!