在全文检索中防止重复结果

时间:2019-02-17 17:22:37

标签: mysql full-text-search distinct

我有两个表,分别是post和info,每个表可以包含多行信息。

表结构如下:

post (int id, int published, varchar title)

info (int id, text content, int post_id)

我想在信息内进行简单的全文搜索,并返回帖子列表,但我希望帖子行在结果列表中仅显示一次,即使它多次在信息内找到查询文本,< / p>

我当前的查询看起来像这样,但是它仍然返回多个具有相同ID的帖子行,

SELECT 
    DISTINCT(post.id),
    post.title,
    info.content
FROM
    post, info
WHERE 
    info.post_id = post.id 
    AND published = 1
    AND MATCH(info.content) AGAINST('cucumber')

1 个答案:

答案 0 :(得分:0)

在mysql的distingle子句中,行适用于行,而非单列值

如果仅需要结果,则应使用聚合功能并按

分组
    SELECT 
        post.id,
        min(post.title),
        min(info.content)
    FROM post
    INNER  info ON  info.post_id = post.id 
        AND published = 1
    WHERE MATCH(info.content) AGAINST('cucumber')
    group by post.id