如何基于多列比较两个不同的表?

时间:2018-03-02 03:59:38

标签: sql sql-server sql-server-2008

第一个表包含具有状态和国家/地区信息的帐户,这些信息大多数都是正确的,但行数很少:

ID       Account       State         Country      Text
1001      Acc1          NJ           USA
1002      Acc2          NY           Null
1003      Acc3          Texas        Japan

我有第二个表,它具有正确的状态和国家信息,第一个表需要与之比较:

ID         State          Country
1          NJ              USA
2          NY              USA
3          Texas           USA    

查询应该检查:

  1. 如果第一个表中的状态存在于第二个表中并且
  2. 是否与正确的国家/地区相关联。
  3. 如果满足上述两个条件,则应使用状态值更新第一个表的“文本”列。 如果不满足这两个条件中的任何一个,则文本列应保持空白。因此结果应如下所示:

    ID      Account      State     Country       Text
    1001     Acc1         NJ         USA          NJ
    1002     Acc2         NY         USA           
    1003     Acc3         Texas      USA      
    

    我能够检查两个条件是否都满足,而且我能够得到不满足条件的行。但是,我不确定如何继续使用正确的状态更新表。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:4)

这些查询将与MSSQL一起用于驱动任一方向的更新......

SELECT State, Country FROM t1
EXCEPT
SELECT State, Country FROM t2

SELECT State, Country FROM t2
EXCEPT
SELECT State, Country FROM t1

t1 is this in your post: (ID,Account,State,Country,Text)
t2 is this in your post: (ID,State,Country)

答案 1 :(得分:3)

你可以试试这个。

hit