在多个表中搜索

时间:2010-02-16 05:56:16

标签: mysql search join full-text-search

假设我有树表:

[ news ]
    id
    title
    text
    date

[ posts ]
    id
    title
    text
    date

[ gallery ]
    id
    title
    text
    date

如何使用一个查询在这些树状表中执行FULLTEXT搜索?

我只想在titletext字段上运行搜索,然后获取idtitledate和{{1}结果......这可能吗?

»更新 - 最重要的是:我需要通过FULLTEXT评分DESC 订购结果(可能混合不同的表格结果)

2 个答案:

答案 0 :(得分:0)

如果表之间存在明显的关系,请加入他们之间的关系。

如果这些数据确实是具有不同身份的相同数据,则可能应将它们重新计算到具有类型字段的单个表中。

答案 1 :(得分:0)

你可以在一个查询中使用UNION ALL进行此操作,但你必须使用三个参数 - 所有三个相同的搜索值 - 并且它将具有相同的数据库负载,如果不是更多,则比三个单独的查询,因为所有结果都将被拉入临时表中以对其进行排序。

尝试类似:

SELECT id, title, text, date, relevance
  FROM (
  SELECT id, title, text, date, MATCH(text) AGAINST (?) AS relevance
    FROM news
  UNION ALL
  SELECT id, title, text, date, MATCH(text) AGAINST (?) AS relevance
    FROM posts
  UNION ALL
  SELECT id, title, text, date, MATCH(text) AGAINST (?) AS relevance
    FROM gallery
  ) temp_sort_table
  ORDER BY relevance DESC