你能不知道MySQL中的架构而复制一行吗?

时间:2015-07-13 15:32:27

标签: mysql

在MySQL中复制行的一种好方法是使用INSERT INTO ... SELECT FROM语法。

例如:

INSERT INTO tblExample (col1, col2, col3)
SELECT col1, col2, col3 FROM tblExample WHERE pkey = 1234;

这很简单直接,但从代码维护的角度来看,这是另一个用于跟踪是否存在任何架构更改的语句。假设我在tblExample表中添加了一个额外的列,col4;现在我必须记得在我的代码中返回并更新此SQL语句。如果我没有这样做,那么我刚刚介绍了一个错误。

考虑到这一点,除了主键之外,是否可以轻松地复制整行,无论模式如何?

2 个答案:

答案 0 :(得分:1)

非常违反最佳做法,您可以执行以下操作:

INSERT INTO myTable
SELECT * FROM myTable WHERE thisField = "abcd"

答案 1 :(得分:0)

有点不优雅的方式:

CREATE TEMPORARY TABLE tmpTable ENGINE=MEMORY SELECT * FROM realTable WHERE pk = 'something';
UPDATE tmpTable SET pk = 'something else' ;
INSERT INTO realTable SELECT * FROM tmpTable;