链接表上的SQL查询,其中结果必须包含特定值

链接表上的SQL查询,其中结果必须包含特定值,sql,Sql,SQLServer2005 我有一个产品和与之相关的属性的链接表。我正在沿着以下路线进行搜索: select distinct ProductId from productattributelink where attributeid in (25,5,44,46) 但我想确保每个productid也与10的attributeId相关联 因此,直接来说,查询应该是:显示所有具有以下attributeid(25,5,44,46)但attributeid为10的产品ID 我有一种感觉,这是很明显

SQLServer2005

我有一个产品和与之相关的属性的链接表。我正在沿着以下路线进行搜索:

select distinct ProductId  from productattributelink where
attributeid in (25,5,44,46)
但我想确保每个productid也与10的attributeId相关联

因此,直接来说,查询应该是:显示所有具有以下attributeid(25,5,44,46)但attributeid为10的产品ID


我有一种感觉,这是很明显的,但我却没有意识到。

你应该将表格本身加入其中:

select distinct p.ProductId  from product p
inner join productattributelink pa1 on pa1.ProductId = p.ProductId
inner join productattributelink pa2 on pa2.ProductId = p.ProductId
where pa1.attributeid IN(25,5,44,46) and pa2.attributeid = 10
select distinct ProductId  from productattributelink p1 
JOIN productattributelink p2 ON p1.ProductId = p2.ProductId 
where p1.attributeid in (25,5,44,46) AND p2.attributeid = 10

谢谢你的回答,效果也很好,但我给了布拉德这个答案,因为我认为他是第一个…虽然有时很难在Stackoverflow上说出来,但如果你是第一个,请告诉我!不确定这两个答案中哪一个是第一个,大概是这个。谢谢你,工作很好。