加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.0577zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

在MySQL中使用HAVING

发布时间:2021-05-23 10:33:13 所属栏目:MySql教程 来源:网络整理
导读:我有一张桌子,我需要从中选择所有名字不是唯一的人,并且只有在名字相似的人中,所有人都有不同的姓氏时才应该选择该集合. 例: FirstN LastNBill ClintonBill CosbyBill MaherElvis PresleyElvis PresleyLargo Winch 我想获得 FirstN LastNBill Clinton 要

我有一张桌子,我需要从中选择所有名字不是唯一的人,并且只有在名字相似的人中,所有人都有不同的姓氏时才应该选择该集合.

例:

FirstN    LastN
Bill      Clinton
Bill      Cosby
Bill      Maher
Elvis     Presley
Elvis     Presley
Largo     Winch

我想获得

FirstN    LastN
Bill      Clinton

要么

FirstN    LastN
Bill      Clinton
Bill      Cosby
Bill      Maher

我尝试了这个,但它没有返回我想要的东西.

SELECT * FROM Ids
GROUP BY FirstN,LastN
HAVING (COUNT(FirstN)>1 AND COUNT(LastN)=1))

[在Aleandre P. Lavasseur评论之后编辑我的帖子] 最佳答案

WITH duplicates AS (
  SELECT firstn --,COUNT(*),COUNT(DISTINCT lastn)
    FROM ids
    GROUP BY firstn
    HAVING COUNT(*) = COUNT(DISTINCT lastn)
       AND COUNT(*) > 1
)
SELECT a.firstn,a.lastn
  FROM ids a INNER JOIN duplicates b ON (a.firstn = b.firstn)
  ORDER BY a.firstn,a.lastn

如果mysql不支持WITH,那么内部查询:

SELECT a.firstn,a.lastn
  FROM ids a,(SELECT firstn --,COUNT(DISTINCT lastn)
          FROM ids
          GROUP BY firstn
          HAVING COUNT(*) = COUNT(DISTINCT lastn)
             AND COUNT(*) > 1
        ) b
  WHERE a.firstn = b.firstn
  ORDER BY a.firstn,a.lastn

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读