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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何基于多列比较两个不同的表?相关的知识,希望对你有一定的参考价值。

第一个表由具有状态和国家/地区信息的帐户组成,这些信息大多数是正确的,错误行很少

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. 是否与正确的国家/地区相关联。

如果满足上述两个条件,则应使用状态值更新第一个表的Text列。如果不满足这两个条件中的任何一个,则text列应保持为空。因此结果应如下所示:

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

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

答案

你可以试试这个。

UPDATE T1
SET 
    [Text] = (CASE WHEN T1.Country = T2.Country THEN T1.[State] ELSE NULL END)
    , Country = (CASE WHEN T1.Country = T2.Country THEN T1.Country ELSE T2.Country END) 
FROM TableAccounts T1
INNER JOIN TableCountry T2 ON T1.[State] = T2.[State]
另一答案

这些查询将与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)

以上是关于如何基于多列比较两个不同的表?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SQL 中通过多列连接两个表?

如何对比两个相同数据库表的不同

工具比较两个不同数据库中的表

如何通过多列理想地组合具有不同主键的两个表 HASH

使用 np.where 基于多列的 pandas 多个条件

如何将用户输入与2个不同的表进行比较