SQL Server INSERT INTO SELECT17 Mar 2025 | 5 分钟阅读 手动使用 INSERT 查询将一个表的数据插入到同一数据库或不同数据库的另一个表中并不容易。但是,SQL Server 提供了 INSERT INTO SELECT 语句来优化此过程。INSERT INTO 语句可以快速填充表。在本节中,我们将学习 INSERT INTO SELECT 命令、语法及其用例。 INSERT INTO SELECT 语句用于将数据插入到数据来自 SELECT 查询的表中。换句话说,此查询从一个表复制数据并将其插入到另一个表中。在使用此语句之前,我们应该记住以下几点
当我们需要将数据从一个表复制到另一个表,或者将来自多个表的数据汇总到一个表中时,此命令非常有用。 语法通常,我们使用 INSERT 命令将一个或多个记录添加到表,并使用 VALUES 子句列出列值。请参见以下语法 要将一个表的数据复制到另一个表,我们需要在 SQL Server 中使用 INSERT INTO SELECT 语句,如下所示 在这里,我们使用了 SELECT 语句,而不是使用从一个或多个表中提取数据的 VALUES 子句。 参数解释我们可以在 INSERT INTO SELECT 语句中看到以下参数
INSERT INTO SELECT 示例让我们通过一个示例来了解如何在 SQL Server 中使用 INSERT INTO SELECT 命令。为此,我们首先需要使用下面给出的语句在指定的数据库中创建一个名为 'Student' 的表 接下来,我们将向该表添加一些值,如下所示 我们可以使用 SELECT 语句来显示该表。我们将在表中看到以下数据 ![]() 现在,我们将创建一个名为 student_info 的表,用于演示目标表 1:将所有数据从一个表插入到另一个表 假设我们想要将 student 表的所有数据插入到 student_info 表中。我们可以使用以下语法来完成 我们可以使用 SELECT 语句来验证插入操作。我们将得到以下输出 ![]() 2. 将部分数据从一个表插入到另一个表 有时,我们需要仅将一些记录插入到另一个表中。我们可以通过借助 WHERE 子句过滤从查询返回的行数来实现。 以下语句从 'Student' 表中提取男性学生,并将它们插入到 student_info 表中 使用 SELECT 语句,我们可以看到 student_info 表只有男性记录 ![]() 3:插入前 N 行 TOP 子句指定查询应插入到目标表中的行数。我们可以通过首先使用此语句从 student_info 表中截断所有行来做到这一点 其次,我们将使用以下语句来插入按总分排序的前 3 名学生 使用 SELECT 语句,我们可以看到 student_info 表只有三条记录 ![]() 4:插入前百分之几的行 当我们不想使用绝对的行数时,百分比用于插入表中行的百分比。其值应介于 0 和 100 之间。例如,如果我们将此值设置为 50,它将允许我们检索表中一半的行。我们可以通过首先使用此语句从 student_info 表中截断所有行来做到这一点 其次,我们将使用以下语句来插入表中学生总分的 30% 的行 使用 SELECT 语句,我们可以看到 student_info 表只有三条记录 ![]() 5. 使用 JOIN 的 INSERT INTO SELECT 语句 SQL Server 还允许我们使用 INSERT INTO SELECT 语句从多个表中检索数据。假设我们想将数据从 customer 和 orders 表检索到另一个表 custorder_orders。我们可以通过选择两个表中都存在的列,然后使用 INSERT INTO SELECT 语句插入到另一个表中来实现。在这里,我们将使用 INNER JOIN 来使用 id 列连接这两个表。 我们将执行 SELECT 命令来验证数据是否已插入到目标表中。这是输出 ![]() |
我们请求您订阅我们的新闻通讯以获取最新更新。