我有UNION查询,需要进行重复数据删除:
SELECT *, 0 as SortKey
FROM house
WHERE door LIKE "green"
UNION
SELECT *, 1 as SortKey
FROM house
WHERE door LIKE "red"
ORDER BY sortkey ASC
UNION应该重复删除行,但“0作为SortKey”和“1作为SortKey”使这不可能,因为我想通过SortKey 0来排序此查询,而不是SortKey 1。
我如何才能将此查询重复数据删除?
...
也许我的榜样,还不够完善。 https://rextester.com/BUFGE49859我需要这个结果:
id SortKey评级
1 9946蓝河1112 1
2 9945蓝屋1113 1
4 9944红房子1114 3
5 9943温室1115 3
避免9945重复并保留SortKey顺序。
您可以只选择与任一条件匹配的所有行,并决定使用哪个SortKey与CASE
。根据您使用的DBMS,语法可能会有所不同。
SELECT *,
CASE
WHEN door LIKE "green" THEN 0
WHEN door like "red" THEN 1
END as SortKey
FROM house
WHERE door LIKE "green" or door LIKE "red"
ORDER BY SortKey
如果您希望重复项有1而不是0,那么只需切换CASE语句的顺序即可。
SELECT DISTINCT door, SortKey FROM (
SELECT *, 0 as SortKey FROM house WHERE door LIKE 'green'
UNION
SELECT *, 1 as SortKey FROM house WHERE door LIKE 'red'
) a ORDER BY Sortkey ASC