查询更新表基于来自不同表的键

时间:2015-05-04 03:10:23

标签: sql sql-server

我正在弄清楚如何使用查询进行映射(基于密钥)。我得到了这样的答案,

UPDATE Table1
   SET group1 = CASE customer_code
       WHEN 'a' THEN 'groupAB'
       WHEN 'b' THEN 'groupAC'
   END,
   group2 = CASE customer_code
       WHEN 'a' THEN 'group12'
       WHEN 'b' THEN 'group13'

   END
WHERE customer_code IN ('a','b') 

但是,如果有很多关键的例子我需要付出很多努力,我有超过一百个密钥,映射它,并将其更新到表格。

我的问题是,是否有任何查询可以根据2个表中的相同键轻松更新。我收到了这个问题,

update Table1 t1
set
  (
    t1.group1
      ) = (
    select
      t2.group2
    from
      Table2 t2
    where
      t2.name2 = t1.name1
     )

但是,我总是收到错误消息,例如'第2行:' t1' 附近的语法不正确 使用别名在这里没有正常工作吗?

提前致谢。

1 个答案:

答案 0 :(得分:4)

使用以下语法:

UPDATE
    Table1
SET
    Table1.group1 = Table2.group2
FROM
    Table1
INNER JOIN
    Table2
ON
    Table1.name = Table2.name