将行复制到具有不同ID的同一个表

时间:2013-06-13 07:02:33

标签: sql

我有表匹配,这个列: ID(with Identity spec.),Team1,Team2。 我需要将ID=1行与所有列复制到新行automatic ID

现在我有代码:

SET IDENTITY_INSERT Match ON
INSERT INTO Match (ID,Team1,Team2)
SELECT
  ???,Team1,Team2
FROM
  Match
WHERE ID='1';

但我不知道,如何获得新的自动身份证?

4 个答案:

答案 0 :(得分:3)

如果您的ID列是自动递增,请执行

INSERT INTO Match (Team1,Team2)
SELECT
  Team1,Team2
FROM
  Match
WHERE ID='1';

答案 1 :(得分:2)

不打开IDENTITY_INSERT并让系统创建ID

INSERT INTO Match (Team1,Team2)
SELECT
  Team1,Team2
FROM
  Match
WHERE ID=1;

IDENTITY_INSERT打开时,您告诉系统“我将分配一个通常您会自动生成一个值的值”,因此您必须提供一个显式值。但由于系统的默认行为是自动生成一个,而您想要的是自动生成的值,因此不应启用此选项。 / p>

无法向系统询问“请给我 分配的下一个自动生成的值”(SQL Server 2012具有Sequence s,其概念类似于IDENTITY列并且支持请求值的能力,但它们两个系统不一样)

答案 2 :(得分:2)

这是片段。

INSERT INTO Match (Team1,Team2)
SELECT
  Team1,Team2
FROM
  Match
WHERE ID='1';

答案 3 :(得分:2)

你根本就没有通过它!

INSERT INTO Match (Team1,Team2)
SELECT
  Team1,Team2
FROM
  Match
WHERE ID='1';