如何从另一个表或excel文件更新表?

时间:2012-08-27 20:45:43

标签: sql-server sql-update

我有一个表T1(col1,col2,info),col1是主键。现在我有另一个表T2(col1,col2,col3),col1是主键。例如,

T1:

col1 col2 info
num1 data1 info1
num2 data2 info2

T2

col1 col2 col3
num1 data1 Y
num2 data2 N
num3 data3 NULL

如何编写用T2更新T1的脚本?结果应该是 T1:

col1 col2 col3 info
num1 data1 Y info1
num2 data2 N info2
num3 data3 NULL NULL

另外,如果我的T2不是表,而是excel文件,是否可以编写脚本将数据导入T1并同时更新T1?

1 个答案:

答案 0 :(得分:1)

col3手动添加到T1会更容易。更新脚本是两部分:更新和插入

UPDATE T1
SET
  T1.col3 = T2.col3  
FROM T1 INNER JOIN T2 ON T1.col1 = T2.col1;

INSERT INTO T1
  (col1, col2, col3, info)
  SELECT T2.col1, T2.col2, T2.col3, NULL 
  FROM T2
  WHERE NOT T2.col1 IN (SELECT col1 FROM T1);

为了使T2成为Excel文件,您需要将T2设置为OLEDB表(使用链接服务器和MS Jet驱动程序)。