2013-01-31 33 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