我有一个表“测试”,具有自动递增id
和任意数量的列。
我想在此表中复制一行id
,当然所有的列都相同。
有没有一种方法可以不命名所有列?
我以为INSERT... SELECT... ON DUPLICATE KEY
会对我有所帮助,直到我意识到它永远不会产生INSERT ON DUPLICATE
,它只会更新现有行。
假设您的表格包含以下字段:
( pk_id int not null auto_increment primary key,
col1 int,
col2 varchar(10)
)
然后,要将具有新键值的值从一行复制到另一行,以下查询可能会有所帮助
insert into my_table( col1, col2 ) select col1, col2 from my_table where pk_id=?;
这将产生一个新的价值pk_id
领域和值复制col1
,并col2
选定行的。
您可以扩展此示例以在表中申请更多字段。
更新 :
在适当尊重JohnP和Martin的意见 -
我们可以使用临时表首先从主表缓冲,然后使用它再次复制到主表。仅更新临时表中的pk参考字段将无济于事,因为它可能已存在于主表中。相反,我们可以从临时表中删除pk字段,并将所有其他字段复制到主表中。
参考Tim
Ruehsen
在相关帖子中的回答:
CREATE TEMPORARY TABLE tmp SELECT * from my_table WHERE ...;
ALTER TABLE tmp drop pk_id; # drop autoincrement field
# UPDATE tmp SET ...; # just needed to change other unique keys
INSERT INTO my_table SELECT 0,tmp.* FROM tmp;
DROP TEMPORARY TABLE tmp;
希望这可以帮助。
类似于这样: 对Docker来说这可能吗?
我使用SQL Server Management Studio在MS SQL数据库上运行了一个查询,一些字段包含新行。我选择将结果保存为csv,显然MS SQL不够智能,无法给我一个格式正确的CSV文件。 其中一些带有新行的字段用引号包装,但有些不是,我不知道为什么(如果它们包含多个新行,似乎会引用字段,但如果它们只包含一个新行,则不会,感谢Microsoft,这很有用)。 当我试图在Excel中
问题内容: 鉴于以下内容(表1): 我想将Field1和Field2的值插入到另一个表(Table2)中。表2具有自动递增整数主键。我想从Table2中检索新的PK,并更新上面的ID列(表1)。 我意识到这不是传统的做法-这不是我需要定期执行的工作,只是一次性完成一些迁移工作。我使用进行了一些尝试,但失败了。“回送”到表1中的PK必须与插入的Field1 / Filed2的值相关。 问题答案: 您
问题内容: 在Dockerfile中,我有 我想排除整个目录,例如我的node_modules目录。 像这样: Docker有可能吗? 问题答案: 在您的docker build上下文目录中创建文件(因此,在这种情况下,很可能是node_modules的父目录),其中只有一行: 尽管您可能只想: 有关dockerignore的信息:https ://docs.docker.com/engine/r
问题内容: 我正在尝试使用此查询使用限制更新一组5行,但mysql显示错误..下面的一个正在工作 为什么第一个不起作用? 问题答案: 如果您确实必须这样做,可以使用以下方法:
问题内容: 我要复制很多行,但是我需要更改一个字段。 我可以选择要复制的行: 现在,我想复制所有的行而设置创建新行来。我该怎么做? 问题答案: 在这里,col2,…代表表中的其余列(Event_ID 以外的 列)。