【问题标题】:SQL insert row with one change一次更改的 SQL 插入行
【发布时间】:2013-05-22 14:00:09
【问题描述】:

我有这张桌子:

Table1:
id   text
1     lala

我想取第一行并复制它,但 id 1 更改为 2。 你能帮我解决这个问题吗?

【问题讨论】:

    标签: sql select insert


    【解决方案1】:

    SQL 表没有“第一”行的概念。但是,您可以根据其特征选择一行。因此,以下方法将起作用:

    insert into Table1(id, text)
        select 2, text
        from Table1
        where id = 1;
    

    另外注意,在创建表时,您可以让 id 列自动递增。语法因数据库而异。如果 id 是自动递增的,那么您可以这样做:

    insert into Table1(text)
        select text
        from Table1
        where id = 1;
    

    并且您会确信新行将具有唯一的 id。

    【讨论】:

      【解决方案2】:

      凯特 - 戈登的回答在技术上是正确的。不过,我想了解更多为什么你想这样做。

      如果您的意图是在插入每个新行时使字段递增,那么手动设置 id 列值不是一个好主意 - 尝试与两行发生冲突变得非常容易同时使用相同的id。

      我建议为此使用 IDENTITY 字段(MS SQL Server -- 在 MySQL 中使用 AUTO_INCREMENT 字段)。然后您可以按如下方式进行插入:

      INSERT INTO Table1 (text)
      SELECT text 
      FROM Table1
      WHERE id = 1
      

      SQL Server 会自动为 id 字段分配一个新的唯一值。

      【讨论】:

        猜你喜欢
        • 2023-04-09
        • 2015-05-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-29
        • 1970-01-01
        相关资源
        最近更新 更多