SQL使用重叠的'id'列连接具有相同列的两个表,但根据table1.col1>=table2.col1合并

SQL使用重叠的'id'列连接具有相同列的两个表,但根据table1.col1>=table2.col1合并,sql,join,Sql,Join,我想连接两个具有相同列且id列重叠的表,但合并基于table1.col1>=table2.col1。这是用SQL编写的 如果table1.col1>=table2.col1,则使用表1中的列。 如果table1.col1

我想连接两个具有相同列且id列重叠的表,但合并基于table1.col1>=table2.col1。这是用SQL编写的

如果table1.col1>=table2.col1,则使用表1中的列。 如果table1.col1 身份证件 可乐 可乐 可乐 A. 3. 5. 4. B 1. 2. 3. C 8. 9 7. 我认为每列的个别情况表达式可能是最好的:

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;