SQL Server:将数据从一列复制到另一列?

时间:2012-01-22 07:46:10

标签: sql sql-server copy

我有两个具有相同列anomaly_id的表。我想使用此代码

anomaly_id的行从第一个表复制到第二个表
UPDATE amb.anamoly_log_update
SET anamoly_id = t2.anomaly_id
FROM amb.anamoly_log_update t1 
INNER JOIN amb.anomaly_fee t2 ON t1.anamoly_id=t2.anomaly_id

即使在我这样做之后,当amb.anomaly.fee(源表)中存在数据时,它会显示0行受影响

请帮忙

修改评论from post:我只想将anamoly_id中的所有amb.anamoly_fee复制到amb.anamoly_log_update。我的代码可能是荒谬的。请检查一下。

5 个答案:

答案 0 :(得分:3)

要将id从anomaly_fee复制到anamoly_log_update,请使用:

INSERT INTO anamoly_log_update (anamoly_id)
      SELECT anamoly_id FROM anomaly_fee

两列都看起来像这样:

INSERT INTO anamoly_log_update (anamoly_id,PID)
      SELECT anamoly_id,PID FROM anomaly_fee

答案 1 :(得分:0)

你只会复制数据,如果他们在两个表中的位置..然后没有任何更新,因为你没有更改数据=>受影响的0行

ON t1.anamoly_id=t2.anomaly_id

请考虑您真正想做的事情并更改您的描述..

答案 2 :(得分:0)

amb.anamoly_log_update是否包含至少一行与amb.anamoly_fee中存在的anamoly_id相对应的行?您正尝试在anamoly_id上加入两个表。

答案 3 :(得分:0)

您需要在表之间提供除t1.anamoly_id=t2.anomaly_id之外的其他链接,否则查询将无效

答案 4 :(得分:0)

merge into amb.anamoly_log_update as t1
    using amb.anomaly_fee as t2
       on  t1.anamoly_id=t2.anomaly_id
when matched then
    update set t1.anamoly_id = t2.anomaly_id