SQL在一个连接中更新多个行

时间:2014-04-23 11:51:56

标签: mysql join

我有以下表格

old_id  | category_id
---------------------
45      | 3455
45      | 07072
38      | 0293

old_id  | new_id
----------------
45      | 1023
38      | 1027

在第一个表中,主键是复合(old_id, category_id)。每个old_id可能有多个类别,您可以看到from old_id=45

如何使用相关的old_id更新每个new_id行?

我正在使用MySQL 5.5

5 个答案:

答案 0 :(得分:1)

类似的东西:

update t1 
set old_id = new_id
from t2
where t1.old_id = t2.old_id

答案 1 :(得分:1)

您可以在UPDATE查询中加入这两个表。

试试这个:

UPDATE TableOld a 
    JOIN TableNew b ON a.old_id = b.old_id
SET a.old_id= b.new_id

答案 2 :(得分:0)

SQLFiddle

UPDATE tab1 T1 SET T1.old_id = (
  SELECT T2.new_id FROM tab2 T2 
  WHERE t2.old_id = t1.old_id
);

然后您将 tab1 输出为

| OLD_ID | CATEGORY_ID |
|--------|-------------|
|   1023 |        3455 |
|   1023 |       07072 |
|   1027 |        0293 |

答案 3 :(得分:0)

试试这个

UPDATE TABLE1 JOIN TABLE2 ON 
    TABLE1.old_id = TABLE2.old_id 
    SET TABLE1.old_id = TABLE2.new_id

答案 4 :(得分:0)

这会

UPDATE Table1 a 
    JOIN Table2 b ON a.old_id = b.old_id
    SET a.category_id= b.new_id