我有一张桌子Eg- tab.我要做的是复制一个自动增量列ID = 1的行,并将数据插入到同一个表中,行和列ID = 2.
使用MySql.如何在单个查询中执行此操作?请帮助
我一直在寻找一段时间但我无法找到解决问题的简单方法.我想在表中复制记录,但当然,需要更新唯一的主键.
我有这个问题:
INSERT INTO invoices
SELECT * FROM invoices AS iv WHERE iv.ID=XXXXX
ON DUPLICATE KEY UPDATE ID = (SELECT MAX(ID)+1 FROM invoices)
Run Code Online (Sandbox Code Playgroud)
问题是这只是改变ID了行而不是复制行.有人知道如何解决这个问题吗?
//编辑:我想在不输入所有字段名称的情况下执行此操作,因为字段名称可能会随时间而变化.
在MySQL中复制行的一种好方法是使用INSERT INTO ... SELECT FROM语法.
例如:
INSERT INTO tblExample (col1, col2, col3)
SELECT col1, col2, col3 FROM tblExample WHERE pkey = 1234;
Run Code Online (Sandbox Code Playgroud)
这很容易和直接,但从代码维护的角度来看,这是另一个用于跟踪是否存在任何架构更改的语句.假设我在tblExample表中添加了一个额外的列col4; 现在我必须记得在我的代码中返回并更新此SQL语句.如果我没有这样做,那么我刚刚介绍了一个错误.
考虑到这一点,除了主键之外,是否有一种简单的方法来复制整行,无论模式如何?
我正在从 table2 复制 column1、column2 但想手动在 table1 中插入 column3 的值...我该怎么办?请帮忙
INSERT INTO table1( column1, column2, column3)
SELECT column1, column2
FROM table2
WHERE `id` = '1'
Run Code Online (Sandbox Code Playgroud)