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

问题描述 投票:0回答:2

我正在使用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时,如何只显示一次重复的帖子

mysql sql
2个回答
2
投票

使用UNION DISTINCT,或只是UNION

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

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

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

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

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
© www.soinside.com 2019 - 2024. All rights reserved.