如何在MySQL中将一行的文本列值复制到另一行?

9

我有一个表格名为pref,其中有一列值为value。这个值的类型是文本。我想将id为7的行的值字段值复制到id为1的行的值字段中。你能帮我如何做吗?我知道MS SQL,但我对mySQL还很陌生。

create table pref
(
   id int,
   value text
)

你尝试过为 MS SQL 编写的 SQL 语句吗?出了什么问题? - sarnold
3个回答

26

在MySQL中,您不能在更新的表中使用子查询,但可以使用联接。

   UPDATE pref AS target
LEFT JOIN pref AS source ON source.id = 7
      SET target.value = source.value
    WHERE target.id = 1;

1
谢谢。我想在合并重复记录时更新多个字段,而这个答案很容易适应我的需求。 - Anthony Geoghegan

1
UPDATE
    pref
SET
    value = (SELECT value WHERE id = 7)
WHERE
    id = 1

0
在我的情况下,我试图将一个加密值从一行复制到同一表中的另一行的空字段中。在这种情况下,我需要将约翰的 PIN 复制到简的 PIN 中。
@mohang 是正确的。这是我的改编 :)
name   pin

john   sdhjduwhdowodw7d87e838g83g8g3of...
jane       

    //copy from field with value into empty field

UPDATE my_table AS target
LEFT JOIN my_table AS source ON source.pin != ""
SET target.pin = source.pin
WHERE target.pin = "";

    // Hurray, it works!

name   pin

john   sdhjduwhdowodw7d87e838g83g8g3of...
jane   sdhjduwhdowodw7d87e838g83g8g3of...   

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接