SQL Server 2008 - 排除行

时间:2009-09-20 10:53:39

标签: sql sql-server-2008

我有以下查询

  

DECLARE @ProductIdsToExclude nvarchar(max)

     

SET @ProductIdsToExclude ='49506541-4CE2-40AC-812A-7AB262E6F0B0,49506541-4ce2-40ac-812a-7ab262e6f0b0'

然后我使用this函数将@ProductIdsToExclude解析为临时表:

  

创建表

     

#TempProductIdsToExclude(ProductId uniqueidentifier)

     

INSERT

     

#TempProductIdsToExclude(ProductId)

     

选择

     

t.txt_value

     

FROM

     

dbo.fn_ParseText2Table(@ProductIdsToExclude,',')as t

然后我使用此查询来提取所有产品

  

SELECT * FROM Products

我的问题是 - 如何将查询排除 Products 表中 ProductId 包含在中的所有结果> #TempProductIdsToExclude

谢谢!

2 个答案:

答案 0 :(得分:2)

使用where not exists

select *
  from Products prod with (nolock)
 where not exists (select 1
                     from #TempProductIdsToExclude temp
                    where temp.ProductId = prod.ProductId)

答案 1 :(得分:0)

您可以使用:

select * from products where productId not in (select productId from ) #TempProductIdsToExclude)