如果值与同一表中的其他列匹配,则更新列

时间:2018-02-14 23:15:17

标签: mysql sql

我有这张桌子:

enter image description here

如果new_parentID

,我想用new_campaignID字段更新old_campaignID = old_parentID

这是一个例子

col A | col B | col C | col D | col E | col F |
1     | 1     | 4     | a     | 7     | NULL  |
2     | 2     | 5     | b     | 2     | NULL  |
3     | 3     | 6     | c     | 8     | NULL  |

因此,如果col b = col E我想在col e的同一行填充col f

结果

col A | col B | col C | col D | col E | col F |
2     | 2     | 5     | b     | 2     | 5     |

我试过了:

update test1 
set new_campaignID = new_parentID 
where old_campaignID = old_ParentID; 

但它无效

2 个答案:

答案 0 :(得分:0)

您需要join。我认为你想要的查询是:

update test1 t1 join
       test1 tt1
       on t.old_campaignId = tt1.old_parentId
    set t1.new_campaignID = tt1.new_parentID ;

答案 1 :(得分:0)

以下是

的简单代码
CREATE TABLE T1
(
   colA CHAR(1),
   colB CHAR(1),
   colC CHAR(1),
   colD CHAR(1),
   colE CHAR(1),
   colF CHAR(1)
);

/*col A | col B | col C | col D | col E | col F |
1     | 1     | 4     | a     | 7     | NULL  |
2     | 2     | 5     | b     | 2     | NULL  |
3     | 3     | 6     | c     | 8     | NULL  |*/

INSERT INTO T1 VALUES
('1','1','4','a','7',null),
('2','2','5','b','2',null),
('3','3','6','c','8',null);

您可以使用SET填充列

UPDATE T1
SET colF = colE
WHERE colB = colE;

SQLFiddle