【问题标题】:How to update table from another table or excel file?如何从另一个表或 excel 文件更新表?
【发布时间】:2012-08-27 20:45:43
【问题描述】:

我有一个表 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?

【问题讨论】:

  • col3 已经是 T1 中的字段了吗?
  • 不,这是一个新列。
  • 那么,您是否也在寻找代码(ALTER TABLE)来添加新列?
  • 是的。但这会造成太多麻烦,我可以手动添加新列并进行更新。我更关心更新脚本。

标签: sql-server sql-update


【解决方案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 驱动程序)。

【讨论】:

    猜你喜欢
    • 2016-07-21
    • 2013-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多