在MySQL中,我试图复制一行自增量列ID=1,并将数据插入到相同的表中,作为列ID=2的新行。
如何在单个查询中做到这一点?
在MySQL中,我试图复制一行自增量列ID=1,并将数据插入到相同的表中,作为列ID=2的新行。
如何在单个查询中做到这一点?
当前回答
试试这个:
INSERT INTO test_table (SELECT null,txt FROM test_table)
每次运行此查询时,这将再次插入所有具有新id的行。值将呈指数增长。
我使用了一个有两列的表,即id和txt, id是自动递增的。
其他回答
使用INSERT…选择:
insert into your_table (c1, c2, ...)
select c1, c2, ...
from your_table
where id = 1
其中c1, c2,…是除id之外的所有列。如果你想显式地插入id为2,那么在你的insert列列表和SELECT中包含它:
insert into your_table (id, c1, c2, ...)
select 2, c1, c2, ...
from your_table
where id = 1
当然,在第二种情况下,您必须注意可能重复的id 2。
insert into MyTable(field1, field2, id_backup)
select field1, field2, uniqueId from MyTable where uniqueId = @Id;
这里有很多很棒的答案。下面是我为正在开发的Web应用程序编写的存储过程示例:
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON
-- Create Temporary Table
SELECT * INTO #tempTable FROM <YourTable> WHERE Id = Id
--To trigger the auto increment
UPDATE #tempTable SET Id = NULL
--Update new data row in #tempTable here!
--Insert duplicate row with modified data back into your table
INSERT INTO <YourTable> SELECT * FROM #tempTable
-- Drop Temporary Table
DROP TABLE #tempTable
INSERT INTO `dbMyDataBase`.`tblMyTable` ( `IdAutoincrement`, `Column2`, `Column3`, `Column4` ) SELECT NULL, `Column2`, `Column3`, 'CustomValue' AS Column4 FROM `dbMyDataBase`.`tblMyTable` WHERE `tblMyTable`.`Column2` = 'UniqueValueOfTheKey' ; /* mySQL 5.6 */
转储您想要sql的行,然后使用生成的sql,减去ID列,将其导入。