Sql 查找其所有属性值都在另一个实体的属性值内的所有实体
考虑下表:Sql 查找其所有属性值都在另一个实体的属性值内的所有实体,sql,sql-server,join,Sql,Sql Server,Join,考虑下表: partyId PartyName AttributeId ------- ---------- ----------- 200167 Customer1 6444 200167 Customer1 6443 200167 Customer1 6442 200112 Customer2 6443 200133 Customer3 6443 200133 Customer3 6442 200155 Customer4 6449 20015
partyId PartyName AttributeId
------- ---------- -----------
200167 Customer1 6444
200167 Customer1 6443
200167 Customer1 6442
200112 Customer2 6443
200133 Customer3 6443
200133 Customer3 6442
200155 Customer4 6449
200155 Customer4 6442
Customer1有一组与之关联的AttributeId。我将把它称为Customer1的属性集。客户2和客户3的属性集完全在客户1的属性集中。但是,Customer 4的一个属性不在Customer1的属性集中(attributeId 6449)。我正在尝试编写一个SQL查询,该查询将生成一个独特的参与方列表,其中参与方的整个属性集位于customer1的属性集中,并且排除了其整个属性集不在customer1的属性集中的所有客户。在本例中,结果应为:
partyId PartyName
------- ----------
200112 Customer2
200133 Customer3
下面使用聚合并统计与customer 1匹配的给定customer的属性数:
select t.customerid
from t left join
t t1
on t1.attributeid = t.attributeid and
t1.customerid = 'Customer1'
group by t.customerid
having count(t.customerid) = count(t1.customerid);
谢谢,戈登。正是我需要的!