我有一个表格,其中包含以下格式的数据:
id text pct -- --- ----- 1 AA 5 1 BB 3 1 CC 16 2 BB 7 3 CC 13
另一个表TABLE2:
id columnAA columnBB columnCC -- ------- ------- -------- 1 0 0 0 2 0 0 0 3 0 0 0
我想更新table2中的列,所以我的结果如下:
id columnAA columnBB columnCC -- ------- ------- -------- 1 5 3 16 2 0 7 0 3 0 0 13
我尝试使用此代码,但它并没有真正起作用。它只更新一列!
update a set columnAA = case when b.text = 'AA' then b.pct else columnAA end ,set columnBB = case when b.text = 'BB' then b.pct else columnBB end ,set columnCC = case when b.text = 'CC' then b.pct else columnCC end from table2 a join table1 b on a.id = b.id
答案 0 :(得分:0)
正如Tab Allerman所说,你可以这样做:
UPDATE TABLE2
SET columnAA = (SELECT TABLE1.pct FROM TABLE1 WHERE TABLE1.text = 'AA'AND TABLE2.id = TABLE1.id),
columnBB = (SELECT TABLE1.pct FROM TABLE1 WHERE TABLE1.text = 'BB'AND TABLE2.id = TABLE1.id),
columnCC = (SELECT TABLE1.pct FROM TABLE1 WHERE TABLE1.text = 'CC'AND TABLE2.id = TABLE1.id)
编辑:
仔细查看您的代码。删除第二个和第三个'Set',它应该工作。您不需要每个都只使用第一个单词“Set”。