2012-01-25 6 views
110

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

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

Я хочу иметь:

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

Что MySQL запрос я должен иметь?

ответ

249
UPDATE `table` SET test=number 
+14

Это один из тех редких случаев, когда разработчики думали, как миряне. – Zaxter

+3

Это просто показывает, насколько плохо понимает обновление. –

+3

Осторожно, если вы не знакомы с «командой обновления» ... Без предложения ** WHERE ** эта команда будет «обновлять» ** ВСЕ ** записи в таблице. – gmo

8

попробовать это:

update `list` 
set `test` = `number` 
+0

не 'list' - это имя db? –

+2

может быть. Я думаю, что это опечатка. –

+0

Список:

user2439124

23
UPDATE `table_name` SET `test` = `number` 

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

-6

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

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 ; 
+11

Похоже, принцип KISS прост ... – NemoStein

+0

Здесь KISS означает «Держите его простым, глупым», – nitinr708

1

попробовать следующее:

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

создает копию всех значений из «числа» и вставить его в " тест»

1

Вслед работал для меня ..

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

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

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

Удачи!

1

BEWARE: Порядок обновления столбцов имеет решающее значение

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

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

BAD: Статус & PrevStatus и в конечном итоге, как 44

UPDATE Collections SET Status=44, PrevStatus=Status WHERE ID=1487496; 
Смежные вопросы