удалить дубликаты UNION ВСЕ извлеченные сообщения sql, mysql - PullRequest
0 голосов
/ 13 июня 2018

Я работаю с предложением UNION ALL для получения сообщений пользователей.

SELECT * FROM $post WHERE condition 1

UNION ALL

SELECT * FROM $post WHERE condition 2

Результаты

Post 1
Post 2
Post 3
Post 3
Post 5

Ожидается

Post 1
Post 2
Post 3 (display only once)
Post 5

ПРОБЛЕМА

Как отобразить только один разсообщение, при использовании UNION ALL

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Один метод заключается в использовании union, потому что удаляет дубликаты:

SELECT * FROM $post WHERE condition 1
UNION
SELECT * FROM $post WHERE condition 2

Более простой и эффективный метод заключается в использовании OR:

SELECT *
FROM $post
WHERE condition 1 OR condition 2
0 голосов
/ 13 июня 2018

Используйте UNION DISTINCT или просто UNION.

https://dev.mysql.com/doc/refman/5.7/en/union.html говорит:

Поведение по умолчанию для UNION состоит в том, что повторяющиеся строки удаляются изрезультат.Необязательное ключевое слово DISTINCT не влияет ни на что, кроме значения по умолчанию, поскольку оно также определяет удаление дублирующихся строк.

Если ваш запрос должен использовать UNION ALL, то сделайте его подзапросом и используйте:

SELECT DISTINCT ... FROM ( ...subquery... ) AS t
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...