SQL Update表(1)表示来自另一个的值,基于表1中的条件

时间:2017-03-02 16:15:40

标签: sql sql-server

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

表A包含列 Scheme1,Class1,Condition 1,Condition 2,

表B列出了我需要更新的所有可能的 Scheme(s)2,Class(s​​)2

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

我正在计划一些

的内容
UPDATE table_A
SET class1 = table_B.class '1'
WHERE IN (class1= '1', condition1 = '1', condition2 = '2')

然后对所有分类重复此操作。那里有大约50个分类。

这是在正确的轨道上,还是有更快/更清洁的方法来做到这一点?我是否需要第二张表格,或者我可以直接更新它?是否更容易创建第3个而不是更新原始表? (我需要在转换后将这些数据移出SQL之外)

2 个答案:

答案 0 :(得分:0)

如果我理解正确,这应该有效

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

答案 1 :(得分:0)

从SELECT第一个角度开始处理UPDATE语句的开发,然后一旦你可以按照你想要的方式检索值,就可以将select转换为UPDATE。

首先构建一个SELECT以显示结果。使用 更新 的内容。

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

现在您可以将其修改为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'