SQL使用重叠的'id'列连接具有相同列的两个表,但根据table1.col1>=table2.col1合并
我想连接两个具有相同列且id列重叠的表,但合并基于table1.col1>=table2.col1。这是用SQL编写的 如果table1.col1>=table2.col1,则使用表1中的列。 如果table1.col1SQL使用重叠的'id'列连接具有相同列的两个表,但根据table1.col1>=table2.col1合并,sql,join,Sql,Join,我想连接两个具有相同列且id列重叠的表,但合并基于table1.col1>=table2.col1。这是用SQL编写的 如果table1.col1>=table2.col1,则使用表1中的列。 如果table1.col1
select id,
(case when t1.col1 < t2.col1 then t2.col1 else t1.col1 end) as col1,
(case when t1.col1 < t2.col1 then t2.col2 else t1.col2 end) as col2,
(case when t1.col1 < t2.col1 then t2.col3 else t1.col3 end) as col3
from t1 full join
t2
using (id);
另一个解决方案:
SELECT DISTINCT ON (id) *
FROM (
SELECT *
FROM table1
UNION ALL
SELECT *
FROM table2
) AS aux
ORDER BY id, col1 DESC;
我在Postgresql中试用过。用您正在使用的数据库标记您的问题。
SELECT DISTINCT ON (id) *
FROM (
SELECT *
FROM table1
UNION ALL
SELECT *
FROM table2
) AS aux
ORDER BY id, col1 DESC;