SQL 比较 2 个表中的 2 列以完成另一列

SQL Compare 2 columns from 2 tables to complete another column

表格有以下列:

Table A: 
TIN, 
Fee_Sched, 
Effective_Date

Table B: 
TIN, 
Fee_Sched, 
Fee_Sched_Eff

TableB.Fee_Sched & TableB.Fee_Sched_Eff 当前为空白

这就是我想要做的:
我想比较两个 TIN 列,当匹配时,我希望 TableA.Fee_Sched 的相应结果打印在 TableB.Fee_Sched 中,TableA.Effective_Date 的结果打印在 [=30= 中]_Eff

我假设我会使用联接或联合,可能还会使用 IF 语句(如果 tableA.TIN = tableB.TIN,则打印 tableA.fee_sched 和 TableA.Effective_Date)。但是,我不确定如何指定结果应存储在哪一列或如何正确组织代码。

**Example:**
Table A
TIN  Fee_Sched  Effective_Date
123  ABCEDF     1/1/2011
456  ZYXABC     9/9/2009

TABLE B
TIN  Fee_Sched  Fee_Sched_Eff
123  blank      blank

**Results:**
TABLE B
TIN  Fee_Sched  Fee_Sched_Eff
123  ABCEDF     1/1/2011

我试过这个:

Insert INTO dbo.TableB (Fee_Sched, Fee_Sched_Eff) 
SELECT Fee_Sched, Effective_Date 
FROM dbo.TableA Where dbo.TableA.TIN = dbo.TableB.TIN;

但是,我得到这个错误:

Msg 4104, Level 16, State 1, Line 3 The multi-part identifier "dbo.TableB.TIN" could not be bound.

好吧,首先要做的是:如果你想修改 table B,你正在寻找一个 UPDATE 命令。另外,请注意,您可以在 UPDATE 语句中使用 SELECT,并且可以从 SELECT 中引用 "outer" table。这应该可以解决问题:

更新 B 集 B.fee_sched = (SELECT fee_sched FROM A WHERE A.TIN=B.TIN)

最后,请记住始终 post 您正在使用哪个 RDBMS,因为您可以为每个 RDBMS 编写的内容可能有所不同(Microsoft SQL、Oracle、MySQL ?)

SQL中有四个基本的verbs/actions:

  • select 检索数据
  • insert 添加数据
  • delete 删除数据
  • update 更改数据。

Update 是您需要使用的那个。使用 MS SQL,您可以使用此 update 查询获得您想要的结果:

update b
set b.Fee_Sched = a.Fee_Sched, b.Fee_Sched_Eff = Effective_Date
from TableB b
join TableA a on a.TIN = b.TIN