运行 在 SQL Server 2012 中的 select 查询之后更新或插入查询
Run update or insert query after select query in SQL Server 2012
我每天早上都有一个大数据提要被转储到 SQL 服务器 table 中,带有 t运行cate 查询。
我需要使用此转储中的任何更改来更新我的主 table 的部分内容
并将任何新行(基本上是其余行)附加到我的 Master table 也来自此转储。
为了减少 运行 时间,此 t运行cate 查询将被修改为仅涵盖过去 2 年。
我应该怎么做
两个 table 具有相同的结构,所以希望这应该是相当简单的。
恰当的做法应该是合并语句。
看这里了解更多
https://docs.microsoft.com/en-us/sql/t-sql/statements/merge-transact-sql?view=sql-server-2017
您应该遵循示例 C 中提到的场景。
-- Create a temporary table variable to hold the output actions.
DECLARE @SummaryOfChanges TABLE(Change VARCHAR(20));
MERGE INTO Sales.SalesReason AS Target
USING (VALUES ('Recommendation','Other'), ('Review', 'Marketing'),
('Internet', 'Promotion'))
AS Source (NewName, NewReasonType)
ON Target.Name = Source.NewName
WHEN MATCHED THEN
UPDATE SET ReasonType = Source.NewReasonType
WHEN NOT MATCHED BY TARGET THEN
INSERT (Name, ReasonType) VALUES (NewName, NewReasonType)
OUTPUT $action INTO @SummaryOfChanges;
-- Query the results of the table variable.
SELECT Change, COUNT(*) AS CountPerChange
FROM @SummaryOfChanges
GROUP BY Change;
我每天早上都有一个大数据提要被转储到 SQL 服务器 table 中,带有 t运行cate 查询。
我需要使用此转储中的任何更改来更新我的主 table 的部分内容 并将任何新行(基本上是其余行)附加到我的 Master table 也来自此转储。
为了减少 运行 时间,此 t运行cate 查询将被修改为仅涵盖过去 2 年。
我应该怎么做
两个 table 具有相同的结构,所以希望这应该是相当简单的。
恰当的做法应该是合并语句。 看这里了解更多 https://docs.microsoft.com/en-us/sql/t-sql/statements/merge-transact-sql?view=sql-server-2017
您应该遵循示例 C 中提到的场景。
-- Create a temporary table variable to hold the output actions.
DECLARE @SummaryOfChanges TABLE(Change VARCHAR(20));
MERGE INTO Sales.SalesReason AS Target
USING (VALUES ('Recommendation','Other'), ('Review', 'Marketing'),
('Internet', 'Promotion'))
AS Source (NewName, NewReasonType)
ON Target.Name = Source.NewName
WHEN MATCHED THEN
UPDATE SET ReasonType = Source.NewReasonType
WHEN NOT MATCHED BY TARGET THEN
INSERT (Name, ReasonType) VALUES (NewName, NewReasonType)
OUTPUT $action INTO @SummaryOfChanges;
-- Query the results of the table variable.
SELECT Change, COUNT(*) AS CountPerChange
FROM @SummaryOfChanges
GROUP BY Change;