Предотвращение дублирования результатов в объединенном полнотекстовом поиске - PullRequest
0 голосов
/ 17 февраля 2019

У меня есть две таблицы, которые являются публикацией и информацией, и каждая публикация может иметь несколько строк информации.

Структура таблицы выглядит следующим образом:

post (int id, int published, varchar title)

info (int id, text content, int post_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 голосов
/ 17 февраля 2019

В mysql отдельное предложение работает для строк, а не для значения одного столбца

, если вам нужен только результат, вы должны использовать функцию агрегирования и группировать по

    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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...