我有需要删除重复数据的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 nom classement SortKey
1 9946蓝河1112 1
2 9945蓝屋1113 1
4 9944红房子1114 3
5 9943温室1115 3
避免9945重复并保留SortKey顺序。
答案 0 :(得分:1)
您只需选择符合任一条件的所有行,然后确定要与CASE
一起使用的SortKey。根据使用的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语句的顺序即可。
答案 1 :(得分:0)
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