SQL插入行有一处更改

时间:2013-05-22 14:00:09

标签: sql select insert

我有这张桌子:

Table1:
id   text
1     lala

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

2 个答案:

答案 0 :(得分:3)

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。

答案 1 :(得分:1)

凯特 - 戈登的回答在技术上是正确的。但是,我想了解更多有关为什么您想要这样做的信息。

如果您打算通过插入每个新行来增加字段,那么手动设置id列值并不是一个好主意 - 它很容易与两行试图发生冲突同时使用相同的ID。

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

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

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