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

栏目: Web · 发布时间: 2021-04-02

简介  这篇文章主要介绍了如何基于多列比较两个不同的表?以及相关的经验技巧,文章约1635字,浏览量283,点赞数6,值得推荐!

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

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)

以上就是本文的全部内容,希望对大家的学习有所帮助,本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文地址:https://www.soinside.com/question/WyuqWtGAbp4j4ECUqo7GXY

多列comboBox但是当选择值时应该是Id(示例代码)

多表操作(示例代码)

基于二分查找(折半查找)的时间范围匹配

PLSQLDeveloper来实现不同数据库的表结构以及表数据同步

计算列的公式基于不同的表列

Laravel将数据插入两个不同的表中

多表操作(示例代码)

使用外键约束(示例代码)