我有如下所示的T-SQL.@Results是一个表变量,'CTE'是一个公用表表达式.如果我要插入的SubId尚未插入表中,我只想在@Results表中插入行.下面显示的代码不起作用,我不知道为什么.有谁能看到这个问题?
Insert Into @Results (
Cell,
CellSettings,
RecipeInstanceId,
BiasStartTime,
SubId
RuleInstanceId)
Select
Cell,
CellSettings,
RecipeInstanceId,
BiasStartTime,
SubId,
RuleInstanceId
From CTE
Where CTE.SubId NOT IN (Select SubId From @Results)
Run Code Online (Sandbox Code Playgroud)
您需要先检查是否存在:
IF NOT EXISTS(SELECT * FROM @Results WHERE SubId = .......)
INSERT INTO @Results (Cell, CellSettings, RecipeInstanceId,
BiasStartTime, SubId, RuleInstanceId)
SELECT
Cell, CellSettings, RecipeInstanceId,
BiasStartTime, SubId, RuleInstanceId
FROM CTE
Run Code Online (Sandbox Code Playgroud)
也许您可以将此要求(仅将那些尚不存在的行返回)放入CTE中,这样您就不必再次从CTE过滤输出...