使用不同ID多次出现的SQL选择
我有一个包含大量列的大表,但对于这一点,我只对3列感兴趣,所以我的日期如下使用不同ID多次出现的SQL选择,sql,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/B
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及其结果。您可以使用以下实现了
HAVING
子句和groupby
:
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);
看
如果要包括其他表,则只需将它们连接起来即可:
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);
?查找“分组依据”和“拥有计数(*)>1”命令。还有一件事。我想对表部件进行查找,以获得partTerminologyName并将其添加到结果中。@user2030553您只需向另一个表添加一个联接即可。看我的编辑,事实上不,这不起作用。它给了我相同的精确结果times@user2030553您能用表和一些示例数据编辑SQLFIDLE()吗?