将值从同一表中的一列复制到另一列

如何将值从一列复制到另一列?

我有:

Database name: list


-------------------
number | test
-------------------
123456 | somedata
123486 | somedata1
232344 | 34

我想拥有:

Database name: list


----------------
number | test
----------------
123456 | 123456
123486 | 123486
232344 | 232344

我应该有什么MySQL查询?

214141 次浏览

问题代码的简短回答是:

UPDATE `table` SET test=number

这里table是表名,它被重音包围(也就是反勾号),因为这是MySQL对逃避关键字的约定(在这种情况下,TABLE是一个关键字)。


小心!

这是一个非常危险的查询,它将表中每一行的test列中的抹去一切替换为number(不管它的值是多少)

更常见的是使用WHERE子句将查询限制为特定的行集:

UPDATE `products` SET `in_stock` = true WHERE `supplier_id` = 10

试试这个:

update `list`
set `test` = `number`
UPDATE `table_name` SET `test` = `number`

您还可以在该过程中进行任何数学更改或使用MySQL函数修改值。

你也可以用程序来做,所以我有一个程序

 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 ;

试一试:

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

如果list是表名,testnumber是列

它创建了所有值的副本从"number"然后粘贴到“test”;

以下工作为我..

  1. 确保在查询编辑器应用程序中没有使用安全模式。如果你是,禁用它!
  2. 然后执行sql命令

表说,'test_update_cmd',源值列col2,目标 取值列col1和条件列col3: -

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

好运!

当心:更新列的顺序很重要

:我想保存现有的状态值到PrevStatus

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

:状态&PrevStatus都是44

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