2013-01-31 35 views
0

我有一个大型列表,但为此我只对3列感兴趣,所以我的日期如下。SQL选择不止一次出现不同的ID

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

每个部分号码/ BrandID组合请记住,我不能肯定零件号单独为不同的制造商可能有完全不同的部件号相同项目。因此,标识符是PartNumber/BrandID组合,如果有帮助,您可以将其视为SKU。我想要的是查看同一SKU具有多个PartTerminologyID的所有情况。我希望每个PartTerminologyID都能看到结果。

+2

[你有什么尝试](http://www.whathaveyoutried.com)? – Kermit

+0

查看“group by”和“count(*)> 1”命令。 – BoltBait

+0

njk,我解你 – Chazt3n

回答

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); 
+0

打我吧。我知道你会在我看到你的编辑大声笑 – Chazt3n

+0

还有一件事。我想查看表格零件以获取partTerminologyName并将其添加到结果中。 – user2030553

+0

@ user2030553您只需将连接添加到其他表中。看到我的编辑 – Taryn