我正在使用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 | |
答案 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);
希望这可以解决你的问题。