Mysql:将某些列从一行复制到另一行

Mysql:将某些列从一行复制到另一行,mysql,sql,Mysql,Sql,例如,是否有一种简单的方法可以将COL2和COL3从具有ID3的行复制到具有ID2的行,并替换任何现有值 ID---COL1---COL2---COL3 1. A B C 2. D E F 3. G H I 4. J K L 使用带有自联接的UPDATE UPDATE yourTable AS t1 CROSS JOIN yourTable AS t2 SET t1.

例如,是否有一种简单的方法可以将COL2和COL3从具有ID3的行复制到具有ID2的行,并替换任何现有值

ID---COL1---COL2---COL3
1.   A        B        C
2.   D        E        F
3.   G        H        I
4.   J        K        L

使用带有自联接的
UPDATE

UPDATE yourTable AS t1
CROSS JOIN yourTable AS t2
SET t1.col2 = t2.col2, t1.col3 = t2.col3
WHERE t1.id = 2
AND t2.id = 3

这是一种更新所需行的非常原始的方法。考虑到表在DB中声明为
选项卡
,您实际上可以
使用从表本身筛选的子查询连接它,而无需在
上使用
,然后相应地设置所需的变量

UPDATE  tab JOIN  (SELECT * FROM tab WHERE ID = 3) AS temp SET   tab.COL1 = temp.COL1, tab.COL2 = temp.COL2, tab.COL3 = temp.COL3 WHERE tab.ID = 2 

为什么不编写一个存储过程,在其中执行类似的操作,只有在源和目标中有作为inout row number列的存储过程。当行之间存在关系时,使用内部联接。这里没有关系,只是两个特定的ID。我认为它们被同等对待,但你可以检查解释是否显示出差异。这一点很好。EXPLAIN相同,在
id
上有或没有索引。对不起,浪费了你的时间。