删除重复UNION ALL检索帖子sql,mysql

时间:2018-06-13 00:36:44

标签: mysql sql

我正在使用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 :(得分:2)

使用UNION DISTINCTUNION

https://dev.mysql.com/doc/refman/5.7/en/union.html说:

  

UNION的默认行为是从结果中删除重复的行。可选的DISTINCT关键字除了默认值之外没有任何效果,因为它还指定了重复行删除。

如果您的查询必须使用UNION ALL,请将其设为子查询并使用:

SELECT DISTINCT ... FROM ( ...subquery... ) AS t

答案 1 :(得分:2)

一种方法是使用union,因为删除了重复项:

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

更简单,更有效的方法是使用OR

SELECT *
FROM $post
WHERE condition 1 OR condition 2