我有这张桌子:
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 列值不是一个好主意 - 尝试使用相同的两行时很容易发生冲突同时识别。
我建议为此使用 IDENTITY 字段(MS SQL Server -- 在 MySQL 中使用 AUTO_INCREMENT 字段)。然后,您可以按如下方式进行插入:
INSERT INTO Table1 (text)
SELECT text
FROM Table1
WHERE id = 1
SQL Server 会自动为 id 字段分配一个新的唯一值。