Sql server 有没有办法一次插入所有关系?

Sql server 有没有办法一次插入所有关系?,sql-server,tsql,Sql Server,Tsql,我有一个N:N关系的表: MyTable(IDTable1, IDTable2) 我必须使用ID创建集合,一个集合使用表1中的ID,另一个集合使用表2中的ID。我必须将集合1中的每个id与集合2中的所有id关联起来 是否可以使用一个T-Sql查询,或者我需要为每个关系创建一个T-Sql查询 谢谢 编辑:我添加脚本以生成3个表。Table01有3行,table02有6行,N:N表有6条记录 USE [Dummy01] GO /****** Object: Table [dbo].[Table0

我有一个N:N关系的表:

MyTable(IDTable1, IDTable2)
我必须使用ID创建集合,一个集合使用表1中的ID,另一个集合使用表2中的ID。我必须将集合1中的每个id与集合2中的所有id关联起来

是否可以使用一个T-Sql查询,或者我需要为每个关系创建一个T-Sql查询

谢谢

编辑:我添加脚本以生成3个表。Table01有3行,table02有6行,N:N表有6条记录

USE [Dummy01]
GO
/****** Object:  Table [dbo].[Table01]    Script Date: 15/07/2018 16:43:35 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Table01](
    [IDTable01] [bigint] IDENTITY(1,1) NOT NULL,
    [Description] [varchar](50) NOT NULL,
 CONSTRAINT [PK_Tabl01] PRIMARY KEY CLUSTERED 
(
    [IDTable01] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object:  Table [dbo].[Table01_Table02_Relationship]    Script Date: 15/07/2018 16:43:35 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Table01_Table02_Relationship](
    [IDTable01] [bigint] NOT NULL,
    [IDTable02] [bigint] NOT NULL,
 CONSTRAINT [PK_Table01_Table02_Relationship] PRIMARY KEY CLUSTERED 
(
    [IDTable01] ASC,
    [IDTable02] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object:  Table [dbo].[Table02]    Script Date: 15/07/2018 16:43:35 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Table02](
    [IDTable02] [bigint] IDENTITY(1,1) NOT NULL,
    [Description] [varchar](50) NOT NULL,
 CONSTRAINT [PK_Table02] PRIMARY KEY CLUSTERED 
(
    [IDTable02] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET IDENTITY_INSERT [dbo].[Table01] ON 

INSERT [dbo].[Table01] ([IDTable01], [Description]) VALUES (1, N'Description 01')
INSERT [dbo].[Table01] ([IDTable01], [Description]) VALUES (2, N'Description 02')
INSERT [dbo].[Table01] ([IDTable01], [Description]) VALUES (3, N'Description 03')
INSERT [dbo].[Table01] ([IDTable01], [Description]) VALUES (4, N'Description 04')
SET IDENTITY_INSERT [dbo].[Table01] OFF
INSERT [dbo].[Table01_Table02_Relationship] ([IDTable01], [IDTable02]) VALUES (2, 4)
INSERT [dbo].[Table01_Table02_Relationship] ([IDTable01], [IDTable02]) VALUES (2, 5)
INSERT [dbo].[Table01_Table02_Relationship] ([IDTable01], [IDTable02]) VALUES (2, 6)
INSERT [dbo].[Table01_Table02_Relationship] ([IDTable01], [IDTable02]) VALUES (3, 4)
INSERT [dbo].[Table01_Table02_Relationship] ([IDTable01], [IDTable02]) VALUES (3, 5)
INSERT [dbo].[Table01_Table02_Relationship] ([IDTable01], [IDTable02]) VALUES (3, 6)
SET IDENTITY_INSERT [dbo].[Table02] ON 

INSERT [dbo].[Table02] ([IDTable02], [Description]) VALUES (1, N'Description 01')
INSERT [dbo].[Table02] ([IDTable02], [Description]) VALUES (2, N'Description 02')
INSERT [dbo].[Table02] ([IDTable02], [Description]) VALUES (3, N'Description 03')
INSERT [dbo].[Table02] ([IDTable02], [Description]) VALUES (4, N'Description 04')
INSERT [dbo].[Table02] ([IDTable02], [Description]) VALUES (5, N'Description 05')
INSERT [dbo].[Table02] ([IDTable02], [Description]) VALUES (6, N'Description 06')
INSERT [dbo].[Table02] ([IDTable02], [Description]) VALUES (7, N'Description 07')
SET IDENTITY_INSERT [dbo].[Table02] OFF

您可以通过单个查询来实现:

INSERT INTO MyTable(IdTable1, IDTable2)
SELECT t1.IDTable1, t2.IDTable2
FROM table1 t1
CROSS JOIN table2 t2

您可以通过单个查询来实现:

INSERT INTO MyTable(IdTable1, IDTable2)
SELECT t1.IDTable1, t2.IDTable2
FROM table1 t1
CROSS JOIN table2 t2

你能显示一些预期结果的样本数据吗?你能显示一些预期结果的样本数据吗?这样做是否可以从表1和表2中选择我需要关联的行?@lvaroGarcía根据你的描述
我必须将表1中的每个id与表2中的所有id关联起来
,它将起作用。所以如果你有表1(1,2)和表2(3,4,5),你会得到(1,3),(1,4),(1,5),(2,3),(2,4),(2,5),你是对的,我想说的是集合1中的每个ID和集合2中的所有ID。集合1具有来自表1的ID,集合2具有来自表2的ID。但是集合中没有每个表的所有id。@阿尔瓦罗加西亚请使用示例数据和所需的结果集创建。这样是否可以从表1和表2中选择需要关联的行?@阿尔瓦罗加西亚根据您的描述
我必须将表1中的每个id与表2中的所有id关联起来
,这将起作用。所以如果你有表1(1,2)和表2(3,4,5),你会得到(1,3),(1,4),(1,5),(2,3),(2,4),(2,5),你是对的,我想说的是集合1中的每个ID和集合2中的所有ID。集合1具有来自表1的ID,集合2具有来自表2的ID。但是集合并没有每个表的所有ID。@阿尔瓦罗加西亚请使用示例数据和所需结果集创建。