Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用不同ID多次出现的SQL选择_Sql - Fatal编程技术网

使用不同ID多次出现的SQL选择

使用不同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

我有一个包含大量列的大表,但对于这一点,我只对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及其结果。

您可以使用以下实现了
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()吗?