我需要返回两个表之间的唯一记录。理想情况下,UNION可以解决我的问题,但是当我执行UNION / distinct时,两个表都包含一个对象字段,它给出了一个错误(不能没有MAP或ORDER方法的ORDER对象)。
所以,我想知道我是否可以做一个UNION ALL(以避免错误)先获取所有记录,然后做一些事情只返回那里的唯一记录。我尝试将解析函数与UNION ALL查询相结合,但到目前为止还没有运气。
Select * from Table1
union all
Select * from table2
有任何帮助吗?注意:我需要返回所有字段。
答案 0 :(得分:1)
我实际上使用分析函数+ row_num解决了这个问题。查询将为每组重复项选择第一条记录,因此只返回唯一记录。
select * from
(
select ua.*,row_number() over (partition by p_id order by p_id ) row_num from
(
select * from table1
union all
select * from table2
)ua
) inner
where inner.row_num=1
答案 1 :(得分:0)
这个怎么样:
SELECT DISTINCT A.* FROM
(
Select * from Table1
union all
Select * from table2
) A;
(或)
SELECT col1,col2,col3...coln FROM
(
Select col1,col2,col3...coln from Table1
union all
Select col1,col2,col3...coln from table2
) A
GROUP BY A.col1,col2,col3...coln;
答案 2 :(得分:-1)
UNION ALL也将提供重复值..而是使用UNION并查看您是否面临错误