如何:创建插入结果查询

可使用“插入结果”查询将行从一个表复制到另一个表或在同一个表内复制行。 例如,在 titles 表中,可使用“插入结果”查询将有关某个出版商的所有书名信息复制到另一个可提供给该出版商的表中。 “插入结果”查询与创建“生成表”查询类似,但它将行复制到现有表中。

提示

也可使用剪切和粘贴将行从一个表复制到另一个表中。为每个表创建一个查询,然后运行这些查询。将所需的行从一个结果网格复制到另一个结果网格中。

当您创建“插入结果”查询时,指定:

  • 要将行复制到其中的数据库表(目标表)。

  • 从中复制行的一个或多个表(源表)。 一个或多个源表将成为子查询的一部分。 如果在同一个表内复制,源表就是目标表。

  • 源表中要复制其内容的列。

  • 目标表中要向其中复制数据的目标列。

  • 定义要复制的行的搜索条件。

  • 排序顺序(如果您希望按特定顺序复制行)。

  • “分组依据”选项(如果您希望仅复制汇总信息)。

例如,下列查询将书名信息从 titles 表复制到名为 archivetitles 的存档表。 该查询复制属于特定出版商的所有书名的四列内容:

INSERT INTO archivetitles 
   (title_id, title, type, pub_id)
SELECT title_id, title, type, pub_id
FROM titles
WHERE (pub_id = '0766')

备注

若要将值插入新行中,请使用“插入值”查询。

可复制某行中选定列或所有列的内容。 不论是哪种情况,您要复制的数据都必须与要复制到其中的行中的列兼容。 例如,如果复制某列(如 price)中的内容,则要复制到其中的行中的列必须接受带小数点的数字数据。 如果要复制整个行,目标表在与源表相同的物理位置必须具有兼容的列。

当您创建“插入结果”查询时,“条件”窗格将发生变化以反映可用于复制数据的选项。 将添加一个“追加”列,以允许您指定应将数据复制到其中的列。

警告

无法撤消执行“插入结果”查询的操作。作为预防措施,可在执行查询前备份数据。

备注

以下说明中的某些 Visual Studio 用户界面元素在您计算机上的名称或显示位置可能有所不同。这些元素取决于您所使用的 Visual Studio 版本和您所使用的设置。有关详细信息,请参阅 Visual Studio 设置

创建“插入结果”查询

  1. 创建一个新查询并添加要从其中复制行的表(源表)。 如果要在同一个表内复制行,则可将源表作为目标表添加。

  2. 从**“查询设计器”菜单中指向“更改类型”,再单击“插入结果”**。

  3. “选择插入结果的目标表”对话框中,选择要将行复制到其中的表(目标表)。

    备注

    查询和视图设计器无法预先确定可更新哪些表和视图。因此,“从查询选择插入的表”对话框中的“表名称”列表将显示正在查询的数据连接中的所有可用表和视图,甚至显示不能将行复制到其中的表和视图。

  4. 在代表表或表值对象的矩形中,选择要复制其内容的列的名称。 若要复制整行,请选择**“*(所有列)”**。

    查询和视图设计器将您选择的列添加到“条件”窗格的**“列”**列中。

  5. 在“条件”窗格的**“追加”**列中,在目标表中为要复制的每列选择目标列。 如果复制整行,请选择 tablename.*。 目标表中的列必须与源表中的列具有相同(或兼容)的数据类型。

  6. 如果要按特定顺序复制行,请指定排序顺序。 有关详细信息,请参见 对查询结果进行排序和分组

  7. 通过在**“筛选器”**列中输入搜索条件来指定要复制的行。 有关详细信息,请参见 如何:指定搜索条件

    如果未指定搜索条件,则将源表中的所有行都复制到目标表中。

    备注

    当向“条件”窗格添加要搜索的列时,查询和视图设计器也会将该列添加到要复制的列的列表中。如果要在搜索中使用某列但不将其复制,请在表示表或表值对象的矩形中,清除该列名旁边的复选框。

  8. 如果要复制汇总信息,请指定“分组依据”选项。 有关详细信息,请参见 汇总查询结果

当执行“插入结果”查询时,“结果”窗格中不报告结果。 但是,会出现一条消息,指出已复制的行数。

请参见

其他资源

查询类型

设计查询和视图