Mysql 在联合全文搜索中防止重复结果

Mysql 在联合全文搜索中防止重复结果,mysql,full-text-search,distinct,Mysql,Full Text Search,Distinct,我有两个表,分别是post和info,每个post可以有多行info 桌子的结构是这样的 post (int id, int published, varchar title) info (int id, text content, int post_id) 我想在info中进行简单的全文搜索,并返回帖子列表,但我希望帖子行在结果列表中只显示一次,即使它多次在info中找到查询文本 我当前的查询看起来像这样,但它仍然返回多个具有相同id的post行 SELECT DISTINCT(

我有两个表,分别是post和info,每个post可以有多行info

桌子的结构是这样的

post (int id, int published, varchar title)

info (int id, text content, int post_id)
我想在info中进行简单的全文搜索,并返回帖子列表,但我希望帖子行在结果列表中只显示一次,即使它多次在info中找到查询文本

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

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')

在mysql中,distinct子句用于行,而不用于单列值

如果您只需要一个结果,您应该使用聚合函数和分组依据

    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

在mysql中,distinct子句用于行,而不用于单列值

如果您只需要一个结果,您应该使用聚合函数和分组依据

    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