我尝试创建一种转换工具,根据特定条件使用新值更新一组数据。
表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之外)
答案 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'