Копировать значения из одного столбца в другой в той же таблице - PullRequest
150 голосов
/ 25 января 2012

Как сделать копию значений из одного столбца в другой? У меня есть:

Database name: list
number | test
123456 | somedata
123486 | somedata1
232344 | 34

Я хочу иметь:

Database name: list
number | test
123456 | 123456
123486 | 123486
232344 | 232344

Какой запрос MySQL должен быть у меня?

Ответы [ 7 ]

329 голосов
/ 25 января 2012

Краткий ответ для рассматриваемого кода:

UPDATE `table` SET test=number

Здесь table - это имя таблицы, которое окружено серьезным акцентом (так называемые обратные тики), поскольку это соглашение MySQL для экранирующих ключевых слов (а в этом случае TABLE является ключевым словом) .

ВНИМАНИЕ, что это довольно опасный запрос, который уничтожит все в столбце test в каждой строке таблицы, заменив его на number (независимо от его значения)

Чаще всего используется предложение WHERE, чтобы ограничить ваш запрос только определенным набором строк:

UPDATE `products` SET `in_stock` = true WHERE `supplier_id` = 10
26 голосов
/ 25 января 2012
UPDATE `table_name` SET `test` = `number`

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

9 голосов
/ 25 января 2012

попробуйте это:

update `list`
set `test` = `number`
7 голосов
/ 02 ноября 2017

ВНИМАНИЕ : Порядок столбцов обновления имеет решающее значение

ХОРОШО : то, что я хочу, сохраняет существующее значение статуса в PrevStatus

UPDATE Collections SET  PrevStatus=Status, Status=44 WHERE ID=1487496;

ПЛОХО : статус и PrevStatus оба заканчиваются как 44

UPDATE Collections SET  Status=44, PrevStatus=Status WHERE ID=1487496;
3 голосов
/ 30 марта 2017

Следующее сработало для меня ..

  1. Убедитесь, что вы не используете безопасный режим в приложении-редакторе запросов. Если да, отключите его!
  2. Затем выполните следующую команду sql

для таблицы скажем 'test_update_cmd', столбец исходного значения col2, target столбец значения col1 и столбец условия col3: -

UPDATE  test_update_cmd SET col1=col2 WHERE col3='value';

Удачи!

3 голосов
/ 16 февраля 2017

попробуйте следующее:

UPDATE `list` SET `test` = `number` 

создает копию всех значений из "числа" и вставляет ее в "тест"

0 голосов
/ 04 сентября 2015

вы можете сделать это с помощью процедуры также, поэтому у меня есть процедура для этого

 DELIMITER $$
 CREATE PROCEDURE copyTo()
       BEGIN
               DECLARE x  INT;
            DECLARE str varchar(45);
              SET x = 1;
            set str = '';
              WHILE x < 5 DO
                set  str = (select source_col from emp where id=x);
            update emp set target_col =str where id=x;      
            SET  x = x + 1;
                END WHILE;

       END$$
   DELIMITER ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...