SQL Server Insert Into Select 语句可用于将数据插入到表中。此插入语句将通过 SELECT 语句指定的记录放入现有表中。
如果目标中存在现有表,则 Insert into Select 语句对于将指定数据加载到目标中非常有用。如果未创建,请使用 SELECT INTO。
SQL INSERT INTO SELECT 语法
INSERT INTO SELECT 语句的语法是
INSERT INTO [DestinationTable] ([Column Names]) SELECT [Column Names] FROM Source WHERE Condition --This is optional
- 列:它允许我们从 SQL Server 表中选择列的数量。它可能是一个或多个。
- DestinationTable:请提供完全限定的名称以及列名。
- 源:使用或 Select 数据库中存在的一个或多个表。使用 JOINS 连接多个表。
这里,我们有 SelectInto 和 Employee 表,它们是空的。我们的任务是获取测试数据库中 Employee 和 Department 表中存在的数据,并使用 INSERT INTO SELECT 语句将其放入 Tutorials 数据库中。

Employee 中的数据是

Department 中的数据是

用于所有列的 SQL Insert Into Select 语句
我们将选择 Employee 表中的所有列,并将它们插入到数据库中的 [Employee] 中。
INSERT INTO [dbo].[Employee]([FirstName],[LastName],[DepartID]) SELECT [FirstName],[LastName],[DepartID] FROM [Employee]
如果我们知道源表中的列数与 SELECT 语句中的列数完全匹配,那么我们可以忽略目标表的列名。这意味着上述 SQL Server INSERT INTO Select 也可以写成
INSERT INTO [dbo].[Employee] SELECT [FirstName],[LastName],[DepartID] FROM [Employee]
提示:忽略列名不是一个好习惯,因此请始终提供列名。
上述查询将从源中选择 [FirstName]、[LastName] 和 [DepartID] 列,并将它们加载到数据库中的 [Employee] 中。
(15 rows(s) affected)
让我们看看它是否将选定的数据加载到目标中。

少数列
在此 SQL Server Insert into select 中,我们选择了一些 Employee 中存在的列,并将它们放入目标表中。尽管目标表中有三列,但只插入 [FirstName] 和 [LastName]。
INSERT INTO [dbo].[Employee]([FirstName],[LastName]) SELECT [FirstName],[LastName] FROM [Employee]
从下面的屏幕截图可以看出,数据只插入到 [FirstName] 和 [LastName] 列中,而 [DepartID] 列为 NULL 值

此 Insert Into Select 语句示例选择 Employee 中存在的几行,并将它们放入目标中。这里我们将使用 WHERE Clause 限制行。
INSERT INTO [dbo].[Employee]([FirstName],[LastName],[DepartID]) SELECT [FirstName],[LastName],[DepartID] FROM [Employee] WHERE [DepartID] = 2
上述查询将把 [DepartID] 值为 2 的源数据中的 [FirstName]、[LastName] 和 [DepartID] 列添加到 [Employee] 表中。
(3 rows(s) affected)
让我们看看上述查询是否将选定的数据加载到目标中。

从多个表进行 SQL Server Insert Into Select
在此 Insert Into Select 语句示例中,我们选择 Employee 和 Department 中存在的列,然后将它们加载到表中。这里我们使用 INNER JOIN 通过 id 列连接两个表。
INSERT INTO [dbo].[Select Into]([FirstName],[LastName],[DepartmentName])
SELECT EMP.[FirstName]
,EMP.[LastName]
,DEPT.[DepartmentName]
FROM [Employee] EMP
INNER JOIN
[Department] DEPT ON
EMP.id = DEPT.i
(8 rows(s) affected)
让我们看看此语句是否将指定数据加载到目标中。

评论已关闭。