我正在使用SQL Server数据库,该数据库导入多个帐户的文件,然后将付款与交易进行匹配。某些交易永远不会收到匹配的付款,因此需要自动生成匹配的虚拟付款。但是,付款仍然必须与导入相关,因此必须首先生成虚拟导入,当然每个帐户必须分开。这段代码可以正常工作,但我认为它是一种强力方法,我担心当数据库变得非常大时它可能是一个问题。我从来不需要从头开始编写这样的查询,而且我也是SQL Server的新手(我已经使用MySQL和SQLite工作了很多项目),所以我希望我的代码不会看起来太粗糙了。我希望有任何改进建议。
IEnumerable<out T>
答案 0 :(得分:1)
使用OUTPUT可以大大简化此过程。简单地插入数据不需要临时表或循环。这是您的代码可能是什么样子的粗略草图。
Insert IMPORTS
(
AccountID
, <several more fields>
)
output inserted.ImportID
, inserted.AccountID
, inserted.<several more fields>
into Payments
select AccountID
, <several more fields>
from Transactions
您可以在文档中阅读有关OUTPUT子句的更多信息。 https://docs.microsoft.com/en-us/sql/t-sql/queries/output-clause-transact-sql
关于此,还有数以百计的文章和示例。困难的部分是知道要寻找什么。