Mysql:将某些列从一行复制到另一行
例如,是否有一种简单的方法可以将COL2和COL3从具有ID3的行复制到具有ID2的行,并替换任何现有值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.
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
上有或没有索引。对不起,浪费了你的时间。