【问题标题】:How to use subselect in MySQL to get all unique names and their count?如何在 MySQL 中使用 subselect 来获取所有唯一名称及其计数?
【发布时间】:2018-05-25 09:58:00
【问题描述】:

我正在尝试进行 SQL 查询,它返回所有唯一名称以及每个名称的出现次数。

这是我想出的,但它只是获取所有名称的总和,而不是单独获取每个名称的总和。

select distinct(etunimi) as etunimi, 
      (select count(distinct(etunimi)) as määrä from jasenet) 
from jasenet;

这是解决此问题的正确方法还是有其他方法可以实现?谢谢。

【问题讨论】:

    标签: mysql sql select subquery


    【解决方案1】:

    如果您按列分组,则 count() 等聚合函数适用于每个组,而不是完整的结果集。

    select etunimi, count(*)
    from jasenet
    group by etunimi
    

    【讨论】:

      【解决方案2】:

      那是因为您没有使用subquery 引用来自outerquery 的列

      所以,应该这样引用:

      select distinct etunimi, 
            (select count(*) 
             from jasenet j1
             where j1.etunimi = j.etunimi
            ) as määrä 
      from jasenet j;
      

      不过,我也建议使用GROUP BY 子句,它比相关 subquery 更有效。

      【讨论】:

      • 感谢您阐明如果按照我最初尝试的方式完成查询将如何工作。
      猜你喜欢
      • 2020-05-27
      • 2011-10-04
      • 1970-01-01
      • 1970-01-01
      • 2021-02-02
      • 2017-12-23
      • 1970-01-01
      • 1970-01-01
      • 2013-09-13
      相关资源
      最近更新 更多