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

时间:2015-03-18 19:23:50

标签: sql sql-server sql-update

表格包含以下列:

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中的结果在TableB.Fee_Sched_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;

但是,我收到了这个错误:

  

消息4104,级别16,状态1,行3多部分标识符   " dbo.TableB.TIN"无法受约束。

2 个答案:

答案 0 :(得分:0)

首先,首先要做的是:如果要修改表B,则需要查找UPDATE命令。另外,请注意您可以在UPDATE语句中使用SELECT,并且可以从SELECT内部引用“外部”表。这应该可以解决问题:

更新B设置B.fee_sched =(选择费用来自A,其中A.TIN = B.TIN)

最后,请记住始终发布您正在使用的RDBMS,因为您可以为每个RDBMS编写的内容可能存在差异(Microsoft SQL,Oracle,MySQL?)

答案 1 :(得分:0)

SQL中有四个基本动词/动作:

  • 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