返回列中具有相等值但在另一列中具有不同值的行

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (43)

我正在尝试返回符合此条件的结果

  • ProfileType与2不同相同ColorCode

我当前的查询返回所有ProfileTypes和ColorCodes

ProfileType | ColorCode

SPT1        | 8XYZ
SPT1        | 1XYZ
SPT2        | 4XYZ
SPT2        | 4XYZ
SPT3        | 4XYZ
SPT3        | 9XYZ
SPT4        | 4XYZ
SPT4        | 4XYZ

我只想从上面的结果集中返回这些行,因为它们是相同的ProfileType但具有两个不同的ColorCodes

ProfileType | ColorCode
SPT1        | 8XYZ
SPT1        | 1XYZ
SPT3        | 4XYZ
SPT3        | 9XYZ

询问

SELECT. P.ProfileType, E.ColorCode,
FROM profilegroups AS PG
 INNER JOIN mfg.profiles AS P
         ON PG.id = P.pickgroup
 INNER JOIN exts AS E
         ON E.Profile = P.Profile
        AND E.ProductNumber IN ('XYZ123', 'MX231X')
        AND PG.DoProcess = 1 
        AND P.ProfileType IN ('SPT1','SPT2','SPT3','SPT4','SPTX2','SPT31', 'SPT90');

ProfileGroups
    - id
Profiles 
    - Profile 
    - ProfileType 
    - PickGroup
Exts
    - Profile 
    - ColorCode

Profiles和Exts有一个主键配置文件,它与ProfileType表中的ProfileType不同

提问于
用户回答回答于

尝试这个 :

select profileType, colorCode
from (select distinct profileType, colorCode from table) a
group by profileType
having count(*) > 1;
用户回答回答于

使用子查询加入,该子查询获取每种配置文件类型的不同颜色代码的数量,但仅返回具有多于一种颜色代码的颜色代码:

SELECT profileType
FROM Exts
GROUP BY profileType
HAVING COUNT(DISTINCT colorCode) > 1

完整查询将如下所示:

SELECT. ProfileType, Color,
FROM profilegroups AS PG
 INNER JOIN mfg.profiles AS P
         ON PG.id = P.pickgroup
 INNER JOIN exts AS E
         ON E.ProfileType = P.ProfileType
 INNER JOIN (
    SELECT profile
    FROM Exts
    GROUP BY profile
    HAVING COUNT(DISTINCT colorCode) > 1) M 
        ON M.profile = P.profile
WHERE   E.ProductNumber IN ('XYZ123', 'MX231X')
        AND PG.DoProcess = 1 
        AND P.ProfileType IN ('SPT1','SPT2','SPT3','SPT4','SPTX2','SPT31', 'SPT90')

所属标签

可能回答问题的人

  • 嗨喽你好

    7 粉丝480 提问8 回答
  • uncle_light

    5 粉丝518 提问7 回答
  • Richel

    4 粉丝0 提问6 回答
  • 人生的旅途

    10 粉丝484 提问6 回答

扫码关注云+社区

领取腾讯云代金券