SQL根据表1中的条件将表(1)更新为另一个表中的值

SQL根据表1中的条件将表(1)更新为另一个表中的值,sql,sql-server,Sql,Sql Server,我正在尝试创建一种转换工具,根据特定条件使用新值更新一组数据 表A有Scheme1、Class1、条件1、条件2、 表B列出了我需要更新的所有可能的方案2,类别2 基本上,表A中的所有内容都为需要更新的内容设置了条件。这就是我遇到困难的地方 我在计划一件事 UPDATE table_A SET class1 = table_B.class '1' WHERE IN (class1= '1', condition1 = '1', condition2 = '2') 然后对所有分类重复此操作。大约

我正在尝试创建一种转换工具,根据特定条件使用新值更新一组数据

表A有Scheme1、Class1、条件1、条件2、

表B列出了我需要更新的所有可能的方案2,类别2

基本上,表A中的所有内容都为需要更新的内容设置了条件。这就是我遇到困难的地方

我在计划一件事

UPDATE table_A
SET class1 = table_B.class '1'
WHERE IN (class1= '1', condition1 = '1', condition2 = '2')
然后对所有分类重复此操作。大约有50种分类


这是在正确的轨道上,还是有更快/更干净的方法?我是否需要第二个表,或者我可以在线更新它?只创建第三个表而不是更新原始表会更容易吗?(转换后,我需要将此数据移到SQL之外)

如果我正确理解您的意思,这应该是可行的

UPDATE a
SET class1 = b.class
FROM
    TableA a
    JOIN TableB b ON a.scheme = b.scheme
WHERE
    a.condition1=...
    AND a.condition2 = ...

从SELECT first的角度来处理UPDATE语句的开发,然后,一旦您能够以您想要的方式检索值,就将SELECT语句转换为UPDATE语句

--SELECT a.class1
--       b.class1
UPDATE a
SET a.class1 = b.class1
FROM table_A AS a
  INNER JOIN table_B AS b
    ON a.id = b.id
WHERE a.condition1 = '1'
首先构建一个SELECT以可视化结果。用什么更新什么,用什么更新什么

现在您可以将其修改为更新

--SELECT a.class1
--       b.class1
UPDATE a
SET a.class1 = b.class1
FROM table_A AS a
  INNER JOIN table_B AS b
    ON a.id = b.id
WHERE a.condition1 = '1'