sql-server - SELECT 语句可以同时返回数据和 INSERT 到另一个 SQL 表吗?
问题描述
下面查询读取相同数据的客户表两次;
- 将选定的字段插入临时表以供以后使用,以及
- 将数据输出到调用它的应用程序
是否有任何 SQL SELECT 语句变体可以同时实现这两个目标?(即没有两次读取数据?)
declare @CustomerID int = 1234
declare @IDsFromCustomer1 table (CustomerID int, TerritoryID int)
--IDs from Customer table
insert into @IDsFromCustomer1(CustomerID, TerritoryID)
select CustomerID, TerritoryID
from [Customer]
where [Customer].CustomerID = @CustomerID
--Return Customer table
select [Customer].*
from [Customer]
where [Customer].CustomerID = @CustomerID
解决方案
您可以使用 INSERT 语句的 OUTPUT 子句
declare @CustomerID int = 1234
declare @IDsFromCustomer1 table (CustomerID int, TerritoryID int)
insert into @IDsFromCustomer1(CustomerID, TerritoryID)
output inserted.*
select @CustomerID CustomerID,
@CustomerID TerritoryID;
select * from @IDsFromCustomer1;
此脚本返回 2 个相同的查询输出。首先,从 INSERT 语句的 OUTPUT 返回一行。其次,所有行都从@IDsFromCustomer1 返回。
推荐阅读
- python - 随机森林模型 sci kit 学习指定列
- python - 基本脚本上的随机 ImageMagick 错误/“意外令牌”错误
- javascript - BabelJS 和 Webpack 配置以获得最大可能的兼容性
- python - 具有不同 bin 范围的多个图
- react-native - React Native Expo 应用程序:无法使用 Axios 将图像发布到 Imgur
- java - XLSX 下载是损坏的 Apache POI 到带有 ResponseEntity 的 ByteArrayOutputStream
- c - 在 C 中打印字符串时出现异常行为
- c - 使用 libmongoc-1.0 编译 C 程序
- c# - Kotlin 等价于 C# 事件
- python - model.fit 没有取 X_train 的所有样本