【发布时间】:2010-04-13 16:00:03
【问题描述】:
假设mysql是这样的
select x,y
from xx
group by y
我想知道 select 将获得多少行,我尝试使用 count 但它不会返回所有结果,因为我使用的是 group by。
怎么做?
谢谢
【问题讨论】:
-
您想知道每组有多少行吗?或者所有组中有多少行?或者有多少组?
-
此选择返回的所有行
假设mysql是这样的
select x,y
from xx
group by y
我想知道 select 将获得多少行,我尝试使用 count 但它不会返回所有结果,因为我使用的是 group by。
怎么做?
谢谢
【问题讨论】:
你可以像这样包装你的查询:
SELECT COUNT(*) FROM
(select x,y
from xx
group by y) sub;
【讨论】:
假设你有一个表格,内容如下:
-------------------
| 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 的元素。
【讨论】:
你可以查看我的回答https://stackoverflow.com/a/36449637/2439715
SELECT
sum(1) as counttotal
FROM (
Your query with group by operator
) as T
【讨论】: