在MySQL中复制行的一种好方法是使用INSERT INTO ... SELECT FROM
语法。
例如:
INSERT INTO tblExample (col1, col2, col3)
SELECT col1, col2, col3 FROM tblExample WHERE pkey = 1234;
这很简单直接,但从代码维护的角度来看,这是另一个用于跟踪是否存在任何架构更改的语句。假设我在tblExample
表中添加了一个额外的列,col4
;现在我必须记得在我的代码中返回并更新此SQL语句。如果我没有这样做,那么我刚刚介绍了一个错误。
考虑到这一点,除了主键之外,是否可以轻松地复制整行,无论模式如何?
答案 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;