检查列的组合是否在两个表中匹配



我有两个我想比较的表。首先,它必须比较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] 

,但这不是显示正确的结果。

事先感谢您的帮助。

因为您正在处理所有列,所以exceptminus是最简单的方法。看起来您正在使用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

相关内容

  • 没有找到相关文章

最新更新