Как скопировать значение текстового столбца из одной строки в другую строку в mySQL

У меня есть таблица pref, имеющая значение столбца. Это значение имеет тип text. Я хочу скопировать значение поля значения строки с идентификатором 7 в поле значения строки с идентификатором 1. Не могли бы вы помочь, как это сделать? Я знаю MS SQL, но я новичок в mySQL.

create table pref
(
   id int,
   value text
)

3 ответов


в MySQL вы не можете использовать подвыбор из той же таблицы, которую вы обновляете, но вы можете использовать соединение.

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

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

в моем случае я пытался скопировать зашифрованное значение из одной строки в пустое поле в другой строке той же таблицы. В этом случае мне нужно было скопировать булавку Джона в булавку Джейн.

@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...