SQL Insert Into Select 语句

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 数据库中。

Two Different Databases and List of Tables in them 1

Employee 中的数据是

Employee Table 0

Department 中的数据是

Department Table Rows

用于所有列的 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 INSERT INTO SELECT Statement 3

少数列

在此 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 Statement 4

此 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)

让我们看看上述查询是否将选定的数据加载到目标中。

View Records 6

从多个表进行 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)

让我们看看此语句是否将指定数据加载到目标中。

INSERT INTO SELECT from Muliple Tables 8

评论已关闭。