在同一个表中将值从一列复制到另一列
Posted
技术标签:
【中文标题】在同一个表中将值从一列复制到另一列【英文标题】:Copy values from one column to another in the same table 【发布时间】:2012-02-18 14:11:37 【问题描述】:如何将值从一列复制到另一列?
我有:
Database name: list
-------------------
number | test
-------------------
123456 | somedata
123486 | somedata1
232344 | 34
我想拥有:
Database name: list
----------------
number | test
----------------
123456 | 123456
123486 | 123486
232344 | 232344
我应该有什么 mysql 查询?
【问题讨论】:
【参考方案1】:相关代码的简短答案是:
UPDATE `table` SET test=number
这里table
是表名,它被重音(又名反引号`)包围,因为这是escape keywords 的MySQL 约定(在这种情况下TABLE
是一个关键字)。
当心!
这是一个非常危险的查询,它将擦除表格每一行中test
列中的所有内容,将其替换为number
(不管它的值如何)
更常见的是使用WHERE
子句将您的查询限制在特定的行集:
UPDATE `products` SET `in_stock` = true WHERE `supplier_id` = 10
【讨论】:
这是开发人员像外行一样思考的罕见情况之一。 如果您不熟悉update command
,请小心... 如果没有WHERE 子句,此命令将update
ALL 记录在表。
如此简单!谢谢!哇!
正如@gmo 警告的那样,擦除大量数据的可能性很大。考虑先备份数据库,然后使用 WHERE 子句运行查询以将其限制为一行。如果您对结果满意,请删除 WHERE 子句。
太棒了。没想到。谢谢。【参考方案2】:
UPDATE `table_name` SET `test` = `number`
您还可以在过程中进行任何数学更改或使用 MySQL 函数来修改值。
【讨论】:
【参考方案3】:试试这个:
update `list`
set `test` = `number`
【讨论】:
列表是 【参考方案4】:注意:更新列的顺序很关键
GOOD:我想要的是将现有的 Status 值保存到 PrevStatus
UPDATE Collections SET PrevStatus=Status, Status=44 WHERE ID=1487496;
BAD:Status 和 PrevStatus 最终都为 44
UPDATE Collections SET Status=44, PrevStatus=Status WHERE ID=1487496;
【讨论】:
你为什么要设置 Status=44? @sceletia 只是一个任意值来演示问题【参考方案5】:尝试以下:
UPDATE `list` SET `test` = `number`
它从“number”创建所有值的副本并将其粘贴到“test”
【讨论】:
【参考方案6】:以下对我有用..
-
确保您没有在查询编辑器应用程序中使用安全模式。如果是,请禁用它!
然后运行下面的sql命令
对于一个表来说,'test_update_cmd',源值列 col2,目标 值列 col1 和条件列 col3:-
UPDATE test_update_cmd SET col1=col2 WHERE col3='value';
祝你好运!
【讨论】:
【参考方案7】:你也可以用程序来做,所以我有这个程序
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 ;
【讨论】:
以上是关于在同一个表中将值从一列复制到另一列的主要内容,如果未能解决你的问题,请参考以下文章