【发布时间】:2023-02-06 20:46:32
【问题描述】:
我有两个确切的表,但有些值差异。所以我想找到那些差异,条件是如果列 value 的差异超过 10。
例如,两个表中的所有 9 列都具有相同的值,但是值列之间的差异是 11,因此这条记录是不同的。如果值差为 9,则记录相同。
所以我写了这个查询来获得差异:
select *
from test.test m
inner join test.test1 t
on
m.month_date = t.month_date and
m.level_1 = t.level_1 and
m.level_2 = t.level_2 and
m.level_3 = t.level_3 and
m.level_4 = t.level_4 and
m.level_header = t.level_header and
m.unit = t.unit and
m.model_type_id = t.model_type_id and
m.model_version_desc = t.model_version_desc
where m.month_date = '2022-11-01' and abs(m.value - t.value) > 10)
所以这会返回所有列值都匹配但未通过值差异条件的所有记录。
其次,我有完整的外部连接来获取所有差异
select *
from test.test m
full outer join test.test1 t
on
m.month_date = t.month_date and
m.level_1 = t.level_1 and
m.level_2 = t.level_2 and
m.level_3 = t.level_3 and
m.level_4 = t.level_4 and
m.level_header = t.level_header and
m.unit = t.unit and
m.model_type_id = t.model_type_id and
m.model_version_desc = t.model_version_desc
where m.month_date is null or t.month_date is null and m.month_date = '2022-11-01'
在没有 UNION 的情况下如何合并这两个查询的结果?我只想有一个查询(可以接受子查询)
【问题讨论】:
-
你能分享一些数据和预期的输出吗
标签: sql postgresql