我有两张桌子需要比较。首先,它必须比较test1
列。如果第一个表中的值存在于第二个表中,反之亦然,则必须在结果中显示这些值。这需要针对每一栏进行。
例如:
first table:
------------------------------
| id | test1 | test2 | test3 |
------------------------------
| 1 | 1 | 1 | 1 |
------------------------------
| 2 | 2 | 2 | 3 |
------------------------------
| 3 | 3 | 3 | 3 |
------------------------------
| 4 | 3 | 3 | 3 |
------------------------------
second table:
------------------------------
| id | test1 | test2 | test3 |
------------------------------
| 1 | 1 | 1 | 1 |
------------------------------
| 2 | 2 | 2 | 2 |
------------------------------
| 3 | 3 | 3 | 3 |
------------------------------
| 4 | 3 | 3 | 3 |
-------------------------------
| 5 | 3 | 9 | 3 |
------------------------------
结果将是:
------------------------------
| id | test1 | test2 | test3 |
------------------------------
| 2 | 2 | 2 | *2* |
------------------------------
| 2 | 2 | 2 | *3* |
------------------------------
| 5 | 3 | *9* | 3 |
------------------------------
现在执行此操作的代码是:
SELECT dbo.first.[test1], dbo.first.[test2], dbo.first.[test3],
dbo.second.[test1], dbo.second.[test2], dbo.second.[test3]
FROM dbo.first left join dbo.second on
dbo.first.[test1]=dbo.second.[test1] and
dbo.first.[test2]=dbo.second.[test2] and
dbo.first.[test3]=dbo.second.[test3]
但这并没有显示正确的结果。
提前感谢您的帮助。
答案 0 :(得分:3)
因为您要处理所有列,except
或minus
是最简单的方法。看起来您正在使用SQL Server,因此:
select *
from (select t1.* from t1
except
select t2.* from t2
) tt
union all
select *
from (select t2.* from t2
except
select t1.* from t1
) tt