SQL选择不同ID出现多次

时间:2013-01-31 21:03:30

标签: sql

我有一个包含大量列的大表,但为此我只对3列感兴趣,所以我的日期如下所示。

PartNumber  BrandID PartTerminonogyID
1234AD      343
DD93873 DAB 343
1-8383-343  STE 4424
444 OTE 5656
444 NYT 4543
3434    IDY 4543
64545   IDH 3455
64545   IDH 8585

我想要的是找到具有多个PartTerminologyID的每个PartNumber / BrandID组合

请注意,由于不同的制造商可能对完全不同的商品具有相同的部件号,因此我无法单独确定部件号。因此标识符是PartNumber / BrandID组合,如果有帮助,您可以将其视为SKU。我想要的是查看同一个SKU具有多个PartTerminologyID的所有情况。我想看看每个PartTerminologyID以及结果。

1 个答案:

答案 0 :(得分:2)

您可以使用以下实现HAVING子句和GROUP BY

的子句
select partnumber, brandid, PartTerminonogyID
from yourtable t
where exists (select partnumber, brandid
              from yourtable t1
              where t.partnumber = t1.partnumber
                and t.brandid = t1.brandid
              group by partnumber, brandid
              having count(distinct PartTerminonogyID) >1);

请参阅SQL Fiddle with Demo

如果您想要包含其他表格,那么您只需JOIN

select t.partnumber, t.brandid, t.PartTerminonogyID, p.partTerminologyName 
from yourtable t
inner join parts p
  on t.PartTerminonogyID = p.PartTerminonogyID
where exists (select partnumber, brandid
              from yourtable t1
              where t.partnumber = t1.partnumber
                and t.brandid = t1.brandid
              group by partnumber, brandid
              having count(distinct PartTerminonogyID) >1);