Mysql 在联合全文搜索中防止重复结果
我有两个表,分别是post和info,每个post可以有多行info 桌子的结构是这样的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 (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