【问题标题】:sql filtering 2 or moresql过滤2个或更多
【发布时间】:2016-06-26 21:52:26
【问题描述】:
    voorletters, naam, geslacht, boete    
    B   Niewenburg  V   25.00
    B   Niewenburg  V   140.00
    D   Moerman V   35.00
    D   Moerman V   50.00
    DD  Cools   V   75.00
    DD  Cools   V   85.00
    E   Bakker, de  M   30.00
    E   Bakker, de  M   35.00
    E   Bakker, de  M   90.00
    E   Bakker, de  M   95.00
    IP  Baalen, van V   140.00
    R   Permentier  M   100.00

我有这个作为 sql 语句

SELECT VOORLETTERS, NAAM, GESLACHT, BEDRAG
FROM SPELER S
RIGHT JOIN BOETE B ON B.SPELERSNR = S.SPELERSNR
LEFT joiN BESTUURSLID BL ON BL.SPELERSNR = S.SPELERSNR
GROUP BY VOORLETTERS, NAAM, GESLACHT, BEDRAG

我怎样才能让我只看到有 2 个或更多“boete”的人?

让我得到这个答案

voorletters, naam, geslacht, boete    
B   Niewenburg  V   25.00
B   Niewenburg  V   140.00
D   Moerman V   35.00
D   Moerman V   50.00
DD  Cools   V   75.00
DD  Cools   V   85.00
E   Bakker, de  M   30.00
E   Bakker, de  M   35.00
E   Bakker, de  M   90.00
E   Bakker, de  M   95.00

【问题讨论】:

  • 添加HAVING COUNT(1) > 1
  • @HoneyBadger 我试过了,但是只有 1 个的“R Permetier M 100.00”仍然出现:/
  • 我不希望从您的示例数据中得到这样的结果。你也可以试试COUNT(boete) > 1

标签: mysql sql filter count having


【解决方案1】:

使用子选择来获取在 speler 中有两行或更多行的人

SELECT VOORLETTERS, NAAM, GESLACHT, BEDRAG
FROM SPELER S
RIGHT JOIN BOETE B ON B.SPELERSNR = S.SPELERSNR
LEFT joiN BESTUURSLID BL ON BL.SPELERSNR = S.SPELERSNR
where s.naam in (select naam from (select naam, count(*) from speler group by name ) )
GROUP BY VOORLETTERS, NAAM, GESLACHT, BEDRAG

【讨论】:

    猜你喜欢
    • 2020-08-25
    • 2012-05-12
    • 2013-10-14
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-21
    • 2014-04-19
    相关资源
    最近更新 更多