我正在使用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
答案 0 :(得分: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
答案 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