Sql查询比较和替换不同的表

时间:2014-07-06 14:32:50

标签: sql-server

我有两个表:表“组件”和表“Something”。

在两个表中都有一个“单元”列和一个“代码”列,对于同一篇文章,两个表中的代码相同。

这两个表来自不同的环境,在许多记录中,单位都是以不同的方式编写的。我的意思是“kg - KG”,“千克 - 公斤”。很乱! 我想手动运行一些查询来调整大部分差异。

  Components                        Something

  Code----Unit                     Code    Unit
   1      kg                        1       kilogram
   2      kg                        2       kg
   3      kg                        3       kilogram

在上面的情况下,查询应该用“kg”替换表“something”中的所有“千克”。表格中的替换“东西”单位值“千克”,其中表格成分为“kg”,代码是一样的。 我知道我不会,但我不知道如何写它。你能帮忙吗?

2 个答案:

答案 0 :(得分:1)

update Something 
   set Something.Unit = Components.Unit
  from Something 
  join Components 
    on Something.Code = Components.Code 
   and Components.Unit = 'kg'
   and Something.Unit  = 'kilogram'

答案 1 :(得分:0)

您可以使用UPDATE JOIN

UPDATE Something
SET 
  Unit = S.Unit
FROM
Something S
JOIN
Components C ON
  (C.Code = S.Code)

这会将Something.Unit设置为Components.Unit的值,使用代码作为匹配。

注意:没有必要检查单位是否不同,因为目标是使它们相等。添加<>子句会减慢查询速度,因为不会使用任何索引。