Sql server 将数据从一个表复制到另一个表
我在SQL Server中有两个表,如下所示,它们通过FK SOPGroupsID关联:-Sql server 将数据从一个表复制到另一个表,sql-server,Sql Server,我在SQL Server中有两个表,如下所示,它们通过FK SOPGroupsID关联:- CREATE TABLE [dbo].[SOPGroups]( [SOPGroupsID] smallint NOT NULL IDENTITY(1,1), [SOP_Group] varchar(200) NOT NULL UNIQUE, PRIMARY KEY CLUSTERED (SOPGroupsID)); GO CREAT
CREATE TABLE [dbo].[SOPGroups](
[SOPGroupsID] smallint NOT NULL IDENTITY(1,1),
[SOP_Group] varchar(200) NOT NULL UNIQUE,
PRIMARY KEY CLUSTERED (SOPGroupsID));
GO
CREATE TABLE [dbo].[SOPTitle](
[SOPGroupsID] smallint DEFAULT 1 NOT NULL,
[SOPTitleID] smallint NOT NULL IDENTITY(1, 1),
[SOP_Title] varchar(300) NOT NULL UNIQUE,
PRIMARY KEY CLUSTERED (SOPTitleID));
GO
--add relationship between tables SOPGroups and SOPTitle
ALTER TABLE [dbo].[SOPTitle] ADD CONSTRAINT [R1] FOREIGN KEY(SOPGroupsID)
REFERENCES [dbo].[SOPGroups] (SOPGroupsID)
ON UPDATE Cascade
ON DELETE Set default;
GO
我正在从excel文件导入数据,第一步是将excel文件导入到SQL server中的临时表中,然后将数据导入到上面的表中,删除重复条目。我将SOP组数据插入表SOP组,如下所示:-
INSERT INTO [dbo].[SOPGroups] (SOP_Group)
SELECT DISTINCT SOP_Group FROM [dbo].['Onthology Return$'] t
WHERE NOT EXISTS
(SELECT SOP_Group FROM [dbo].[SOPGroups] x WHERE x.SOP_Group = t.SOP_Group)
我的问题是如何在表[SOPTitle]中插入,并根据与临时表“Ontology Return$”中不同SOP\U标题匹配的SOP\U组名称从表SOPGroups中获取SOPGroupID
INSERT INTO [dbo].[SOPTitle] (SOPGroupsID, SOP_Title)
SELECT DISTINCT SOP_Group, SOP_Title FROM [dbo].['Onthology Return$'] t
您可以使用组名称之间的联接来获取组id
INSERT INTO [dbo].[SOPTitle] (SOPGroupsID, SOP_Title)
SELECT DISTINCT g.SOPGroupsID, t.SOP_Title
FROM [dbo].['Onthology Return$'] t
INNER JOIN [dbo].[SOPGroups] g ON t.SOP_Group = g.SOP_Group
当新的SOP_组值插入到SOP组中时,我们可以在此表和导入表之间的SOP_组上使用
内部联接。这将返回与插入的SOP_组相关的所有SOP_标题,我们从SOPGroups表中获取它们各自的SOPGroupID
INSERT INTO [dbo].[SOPTitle] (SOPGroupsID, SOP_Title)
SELECT DISTINCT g.SOPGroupsID, t.SOP_Title
FROM [dbo].['Onthology Return$'] t
INNER JOIN [dbo].[SOPGroups] g ON t.SOP_Group = g.SOP_Group
需要注意的是,selectdistinct
语句在第二次插入时的工作方式不同,因为它允许为每个SOP\u组插入多个SOP\u标题值