mysql - 通过复制现有行将新行插入表中

标签 mysql sql sql-insert

有几个问题涉及通过复制现有行来插入新行。

这个问题建立在它的基础上,但有本质上的不同。

我有一个包含 9000 多行的表。大约有10列。第 1 列是自动增量,是唯一键。

我想通过复制现有行中的所有内容,在表中插入与现有行数完全相同的行数,显然第 1 列除外,但第 10 列除外,该列将根据现有行中第 10 列的值进行更改,例如如果现有行中的第 10 列为 23,则它变为 52,如果现有行中的第 10 列为 25,则它变为 53。

所以基本上现有行和新行之间的唯一区别是第 10 列值(除了唯一 ID)。第 10 列将采用非常有限的值。

这样的东西有用吗?

INSERT INTO mycooltable (col2, col3, col4, col5, col6, col7, col8, col9, col10) 
SELECT col2, col3, col4, col5, col6, col7, col8, col9, 52
FROM mycooltable WHERE col10 = 23

INSERT INTO mycooltable (col2, col3, col4, col5, col6, col7, col8, col9, col10) 
SELECT col2, col3, col4, col5, col6, col7, col8, col9, 53
FROM mycooltable WHERE col10 = 25

最佳答案

是的,这肯定会起作用。

请注意此处找到的 INSERT 语法的第三个示例:

INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name [(col_name,...)]
    SELECT ...
    [ ON DUPLICATE KEY UPDATE
      col_name=expr
        [, col_name=expr] ... ]

引用:http://dev.mysql.com/doc/refman/5.5/en/insert.html

关于mysql - 通过复制现有行将新行插入表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15311592/

相关文章:

node.js - 使用 Node 插入 JSON 对象 postgres,无需 for 每个 db.query 循环

php - 如果之前不存在则插入新记录,否则更新它。也不要针对特定​​条件插入超过 N 条记录

mysql - UNIQUE 约束,仅当字段包含特定值时

mysql - 如何将 max 和 min 的输出加在一起以获得总和

php - PHP 中的 MD5 哈希验证因未知原因失败

php - 从数据库中检索日期

MySQL 插入忽略重复项但因外键错误而失败

使用 Kohana 的 ORM 构建 MySql 查询

php - 从 nodejs 向 php 发送请求时输入意外结束

mysql - SQL `update` 如果行中存在键组合 - 否则创建新行