【问题标题】:mysql group by and count rows problemmysql group by和count rows问题
【发布时间】:2010-04-13 16:00:03
【问题描述】:

假设mysql是这样的

select x,y 
from xx 
group by y

我想知道 select 将获得多少行,我尝试使用 count 但它不会返回所有结果,因为我使用的是 group by。

怎么做?

谢谢

【问题讨论】:

  • 您想知道每组有多少行吗?或者所有组中有多少行?或者有多少组?
  • 此选择返回的所有行

标签: sql mysql


【解决方案1】:

你可以像这样包装你的查询:

SELECT COUNT(*) FROM
  (select x,y  
    from xx  
    group by y) sub;

【讨论】:

  • 如果有问题的 MySQL 服务器不允许子查询,您知道如何做到这一点吗?
【解决方案2】:

假设你有一个表格,内容如下:

 -------------------
| ID | NAME | GROUP |
+-------------------+
| 1  |  A   |  1    |
+-------------------+
| 2  |  B   |  2    |
+-------------------+
| 3  |  C   |  2    |
+-------------------+
| 4  |  D   |  3    |
+-------------------+
| 5  |  E   |  1    |
+-------------------+
| 6  |  F   |  3    |
+-------------------+

以下 self LEFT JOIN 计算 GROUP 中不同值的数量。

SELECT COUNT(*)
FROM table AS t1
LEFT JOIN table AS t2 ON t2.GROUP = t1.GROUP AND t2.ID > t1.ID
WHERE t2.id IS NULL;

此查询的作用是为每个组找出具有最高 id 的元素。

【讨论】:

    【解决方案3】:

    你可以查看我的回答https://stackoverflow.com/a/36449637/2439715

    SELECT 
        sum(1) as counttotal
    FROM (
        Your query with group by operator
    ) as T
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 2019-02-11
      • 1970-01-01
      • 2020-05-17
      • 2015-09-22
      • 1970-01-01
      相关资源
      最近更新 更多