使用EXCEPT

时间:2016-11-10 11:47:07

标签: sql h2

我正在使用EXCEPT / MINUS来比较两个表之间的行/列是否匹配。

select col1, col2 from table1
minus
select col1, col2 from table2

对于给定的行,如果用于例如col2不匹配,我想仅输出col2忽略匹配的col1值或显示null,因为col1没有不匹配。有没有办法单独使用SQL?

表1

| col1 | col2 |
|  A   |  B   |
|  X   |  Y   |
|  M   |  N   |

表2

| col1 | col2 |
|  A   |  Z   |
|  X   |  Y   |
|  1   |  N   |

应用上面的sql产生

| col1 | col2 |
|  A   |  B   |
|  M   |  N   |

但我可能需要的只是不匹配的值,如下所示。

| col1 | col2 |
|      |  B   |
|  M   |      |

1 个答案:

答案 0 :(得分:1)

你可以试试这个

SELECT CASE 
         WHEN T2.COL1 IS NULL OR T1.col1 <> T2.col1 THEN T1.col1 
       END COL1, 
       CASE 
         WHEN T2.COL2 IS NULL OR T1.col2 <> T2.col2 THEN T1.col2 
       END COL2 
FROM   table1 T1 
       LEFT JOIN table2 T2 
         ON (T1.col1 = T2.col1 
             OR T1.col2 = T2.col2)
            AND (T1.col1 <> T2.col1 
                  OR T1.col2 <> T2.col2); 

希望这可以解决你的问题。