我在create view语句中有两个中间结果集。结果集来自两个不同的连接路径,我需要将它们联合起来。但它并不止于此。由于ID列必须是唯一的,因此我需要结果集2中包含与第一个结果集相同的ID的行来覆盖第一个结果集中的相同行。
让我在这里说明一下:
Result set 1
ID Value
------------
1 a
3 a
5 a
6 a
7 a
8 a
Result Set 2
ID Value
------------
2 b
4 b
5 b
7 b
9 b
10 b
End result set
ID value
------------
1 a
2 b
3 a
4 b
5 b
6 a
7 b
8 a
9 b
10 b
我不知道如何处理这个问题。 Union / except / intersect会创建重复的id,所以这没有用。
答案 0 :(得分:1)
尝试删除结果集1中的元素,其中结果集2中的id存在于union all之前。
答案 1 :(得分:1)
SELECT COALESCE(set2.ID, set1.ID) AS ID,
CASE WHEN set2.ID IS NULL THEN set1.Value ELSE set2.Value END AS Value
FROM set1
FULL JOIN set2
ON set1.ID = set2.ID