【发布时间】:2013-05-22 14:00:09
【问题描述】:
我有这张桌子:
Table1:
id text
1 lala
我想取第一行并复制它,但 id 1 更改为 2。 你能帮我解决这个问题吗?
【问题讨论】:
我有这张桌子:
Table1:
id text
1 lala
我想取第一行并复制它,但 id 1 更改为 2。 你能帮我解决这个问题吗?
【问题讨论】:
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。
【讨论】:
凯特 - 戈登的回答在技术上是正确的。不过,我想了解更多为什么你想这样做。
如果您的意图是在插入每个新行时使字段递增,那么手动设置 id 列值不是一个好主意 - 尝试与两行发生冲突变得非常容易同时使用相同的id。
我建议为此使用 IDENTITY 字段(MS SQL Server -- 在 MySQL 中使用 AUTO_INCREMENT 字段)。然后您可以按如下方式进行插入:
INSERT INTO Table1 (text)
SELECT text
FROM Table1
WHERE id = 1
SQL Server 会自动为 id 字段分配一个新的唯一值。
【讨论】: