Sql server 如何使用唯一标识复制SQL Server 2008表中的所有值

Sql server 如何使用唯一标识复制SQL Server 2008表中的所有值,sql-server,sql-server-2008,duplicates,Sql Server,Sql Server 2008,Duplicates,我有一个名为table123的表格,大约有80行。它包括列“ID”、“名字”、“姓氏”、“职务”、“工资”和“地址” 我创建了一个名为table987的新表,它与table123完全相同。这是为了不使用任何命令破坏表123 在表987中,我希望复制所有值,以便每行有2个副本。因此,如果我有一行的“John”作为“First_Name”,我希望“John”的副本在表中紧跟其后 但是,我不希望副本具有相同的“ID”。每行应具有唯一的“ID”。基本上,每条记录应该有2条,但每条记录都应该有一个唯一的“

我有一个名为table123的表格,大约有80行。它包括列“ID”、“名字”、“姓氏”、“职务”、“工资”和“地址

我创建了一个名为table987的新表,它与table123完全相同。这是为了不使用任何命令破坏表123

表987中,我希望复制所有值,以便每行有2个副本。因此,如果我有一行的“John”作为“First_Name”,我希望“John”的副本在表中紧跟其后

但是,我不希望副本具有相同的“ID”。每行应具有唯一的“ID”。基本上,每条记录应该有2条,但每条记录都应该有一个唯一的“ID

我已尝试使用以下脚本复制值,但每个副本都具有与原始记录相同的“ID”:

INSERT INTO table987 (ID, First_Name, Surname, Job_Title, Salary, Address)
    SELECT ID, First_Name, Surname, Job_Title, Salary, Address
    FROM table123;

是否有一个特定的脚本可以用于以这种方式对重复项进行排序?

使用UNION ALL并将“ID”设置为自动递增或设置默认值NEWID()


虽然答案已经被接受,但看到上面的评论(“但现在它只是到处乱七八糟”),我想在查询中添加ORDER BY子句,这将为您提供上述评论中所需的有序数据:

DECLARE @table123 table(ID int, First_Name varchar(100),Surname varchar(100),Job_Title varchar(100),Address varchar(100))
DECLARE @table987 table(ID int, First_Name varchar(100),Surname varchar(100),Job_Title varchar(100),Address varchar(100))
INSERT INTO @table123 
VALUES
    (1,'FName1','Surname1','JobTitle1','Address1'),
    (2,'FName2','Surname2','JobTitle2','Address2'),
    (3,'FName3','Surname3','JobTitle3','Address3'),
    (4,'FName4','Surname4','JobTitle4','Address4'),
    (5,'FName5','Surname5','JobTitle5','Address5')

INSERT INTO @table987
SELECT * FROM (
SELECT * FROM @table123
UNION ALL
SELECT * FROM @table123)result ORDER BY ID

SELECT * FROM @table987;
输出:

--------------------------------------------------
|ID  First_Name   Surname    Job_Title   Address |
|------------------------------------------------|
|1    FName1      Surname1   JobTitle1   Address1|
|1    FName1      Surname1   JobTitle1   Address1|
|2    FName2      Surname2   JobTitle2   Address2|
|2    FName2      Surname2   JobTitle2   Address2|
|3    FName3      Surname3   JobTitle3   Address3|
|3    FName3      Surname3   JobTitle3   Address3|
|4    FName4      Surname4   JobTitle4   Address4|
|4    FName4      Surname4   JobTitle4   Address4|
|5    FName5      Surname5   JobTitle5   Address5|
|5    FName5      Surname5   JobTitle5   Address5|
-------------------------------------------------- 

是dbo。在表名之前需要吗?我刚刚尝试过这个,它和我使用的脚本几乎一样,但是现在它到处乱七八糟。不,dbo。如果我们使用的是临时表,则不需要。根据您的问题,“ID”在每行中应该是唯一的,并且在接受的答案中不显示任何唯一值。虽然前面的答案非常相似,但这一个更容易理解
--------------------------------------------------
|ID  First_Name   Surname    Job_Title   Address |
|------------------------------------------------|
|1    FName1      Surname1   JobTitle1   Address1|
|1    FName1      Surname1   JobTitle1   Address1|
|2    FName2      Surname2   JobTitle2   Address2|
|2    FName2      Surname2   JobTitle2   Address2|
|3    FName3      Surname3   JobTitle3   Address3|
|3    FName3      Surname3   JobTitle3   Address3|
|4    FName4      Surname4   JobTitle4   Address4|
|4    FName4      Surname4   JobTitle4   Address4|
|5    FName5      Surname5   JobTitle5   Address5|
|5    FName5      Surname5   JobTitle5   Address5|
--------------------------------------------------