我需要返回两个表之间的唯一记录。理想情况下,UNION可以解决我的问题,但是两个表都包含一个对象字段,当我执行UNION / distinct时,这会给我一个错误(如果没有MAP或ORDER方法,则无法对对象进行排序)。
因此,我想知道是否可以先执行UNION ALL(以避免错误)以获取所有记录,然后执行一些操作以仅从此处返回唯一记录。我尝试将分析函数与UNION ALL查询结合使用,但到目前为止还没有运气。
Select * from Table1
union all
Select * from table2
有什么帮助吗?注意:我需要返回所有字段。
我实际上使用解析函数+ 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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句