1
我有一個表變量,其中填充了許多行。我試圖實現的是循環遍歷表變量的每一行,查看ID列是否存在於另一個標準表中,並將該行添加到新創建的表變量中。循環遍歷表變量並將缺失的行插入到新的表變量中
我的代碼如下:
DECLARE
@Intervention_ID int
SET @Intervention_ID = 969
/*---Check if intervention has pre-requisites---*/
DECLARE @PreRequisites TABLE
(
[Intervention_ID] int
)
INSERT INTO @PreRequisites
(
[Intervention_ID]
)
SELECT IP.[Requisite_ID]
FROM DI_Intervention_Prerequisites IP
WHERE
IP.[Intervention_ID] = @Intervention_ID
AND IP.[Prerequisite] = 1
/*---Check if pre-requisites have been completed---*/
DECLARE @Result TABLE
(
[Type_ID] int
, [Type_Name] nvarchar(max)
, [Intervention_ID] int
, [Intervention_Name] nvarchar(max)
)
WHILE NOT EXISTS
(
SELECT TOP 1 1
FROM DI_Employee_Intervention EI
WHERE
EI.[Intervention_ID] = (SELECT [Intervention_ID] FROM @PreRequisites)
)
INSERT INTO @Result
(
[Type_ID]
, [Type_Name]
, [Intervention_ID]
, [Intervention_Name]
)
正如你所看到的,我停留在代碼的WHILE NOT EXISTS
一部分。需要發生的是@PreRequisites
內不存在的每行DI_Employee_Intervention
,需要將該特定的@PreRequisites
行插入@Result
。
嗨馬克,我當時RBAR方法似乎很好...直到WHERE子句。但我試過你的解決方案,結果是正確的。謝謝 –