我有两个我想比较的表。首先,它必须比较test1
列。如果第一个表中存在一个值的值,则在第二个表中存在doenst,反之亦然,则必须在结果中显示这些值。这需要为每一列完成。
例如:
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]
,但这不是显示正确的结果。
事先感谢您的帮助。
因为您正在处理所有列,所以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