如何基于多列比较两个不同的表?
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
查询应该检查:
- 如果第一个表中的状态存在于第二个表中
- 是否与正确的国家/地区相关联。
如果满足上述两个条件,则应使用状态值更新第一个表的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)
以上是关于如何基于多列比较两个不同的表?的主要内容,如果未能解决你的问题,请参考以下文章