适用于:SQL Server
可以使用“插入结果”查询将行从一个表复制到另一个表或表中。 例如,在 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
),则要复制到的行中的列必须接受带小数位数的数字数据。 如果要复制整行,目标表必须具有与源表相同的物理位置的兼容列。
创建插入结果查询时,“条件”窗格将更改为反映可用于复制数据的选项。 添加了“追加”列,用于指定应将数据复制到其中的列。
谨慎
无法撤消执行插入结果查询这一操作。 作为预防措施,在执行查询之前备份数据。
创建插入结果查询
创建新的查询,并添加要从中复制行(源表)的表。 如果要复制表中的行,可以将源表添加为目标表。
在 查询设计器 菜单中,指向 更改类型,然后单击 “插入结果”。
在“为插入结果选择目标表”对话框中,选择要将行复制到的表(目标表)。
注意
查询和视图设计器无法提前确定可以更新的表和视图。 因此,在 “从查询中选择表” 对话框中的“表名称” 列表中,将显示在您要查询的数据连接中的所有可用表和视图,甚至包括那些您可能无法复制行到其中的表和视图。
在表示表或表值对象的矩形中,选择要复制其内容的列的名称。 若要复制整个行,请选择 *(所有列)。
查询和视图设计器会将您选择的列添加至条件窗格的 列和 列。
在“条件”窗格的“添加”列中,为每列要复制的列选择目标表中的目标列。 如果要复制整个行,请选择 tablename.*。 目标表中的列必须与源表中的列具有相同(或兼容)数据类型。
如果要按特定顺序复制行,请指定排序顺序。 有关详细信息,请参阅 排序和分组查询结果(Visual Database Tools)。
通过在 筛选器 列中输入搜索条件来指定要复制的行。 有关详细信息,请参阅 指定搜索条件(Visual Database Tools)。
如果未指定搜索条件,源表中的所有行都将复制到目标表。
注意
将列添加到“条件”窗格时,查询和视图设计器还会将其添加到要复制的列列表中。 如果要使用列进行搜索但不复制它,请清除表示表或表值对象的矩形中列名旁边的复选框。
如果要复制摘要信息,请指定“分组依据”选项。 有关详细信息,请参阅 汇总查询结果(Visual Database Tools)。
执行插入结果查询时,结果窗格中没有结果。 而是显示一条消息,指示复制了多少行。
另请参阅
查询类型(Visual Database Tools)
设计查询和视图操作主题(Visual Database Tools)