交换两列两列的值

时间:2017-11-24 12:17:22

标签: sql-server

有两个表T1T2包含IdName等列。

如何根据name交换两个表的Id列值?

enter image description here

3 个答案:

答案 0 :(得分:0)

  • 使用与T1
  • 相同的模式创建临时表
  • 使用T1值填充
  • 使用T2值更新T1
  • 使用临时表值更新T2
  • drop temp table

示例代码:

SELECT Id, Name INTO #tt FROM T1

UPDATE T1
SET T1.Name = T2.Name
FROM T1 INNER JOIN T2 ON T1.Id = T2.Id

UPDATE T2
SET T2.Name = #tt.Name
FROM T2 INNER JOIN #tt ON T2.Id = #tt.Id

DROP TABLE #tt

确保您还可以添加一些错误检查或交易以避免灾难性后果

答案 1 :(得分:0)

  1. T1中创建一个名为tempName
  2. 的临时列
  3. T2的名称复制到tempName T1的{​​{1}}对应id
    update T1
    set tempName = (
        select name
        from T2
        where T1.id = T2.id
    );
    
  4. T1的名称复制到T2并添加相应的id:  
    update T2
    set name = (
        select name
        from T1
        where T1.id = T2.id
    );
    
  5. tempName的值复制到name中的T1:  
     update T1
     set name = tempName;     
  6. 来自Drop; 的
  7. tempName T1

答案 2 :(得分:0)

创建一个临时表,其值与表T1值相同。然后使用表name的{​​{1}}列值更新表T1的{​​{1}}列。然后使用临时表的name列值更新表T2的{​​{1}}列。更新两个表后,删除临时表。

<强>查询

name