问题描述
|
可以在示例中更好地说明。
我在MysqL中有以下数据
Name address age
John1 33 St 20
John2 22 St 21
John3 44 St 20
John4 55 St 21
John6 44 St 20
John5 66 St 35
我想获取具有基于年龄的计数的行列表。但是是否有可能使最后一行与每个计数相关联。例
Name address age Count
John6 44 St 20 3
John4 55 St 21 2
John5 66 St 35 1
解决方法
查看
GROUP BY
的语法
SELECT *,count(*) as Count FROM tableName GROUP BY age;
更新
假设您决定添加一个排序列,例如日期时间:
Name address age created
John1 33 St 20 2011-04-01 10:00:00
John2 22 St 21 2011-04-01 09:00:03
John3 44 St 20 2011-04-01 07:00:20
John4 55 St 21 2011-04-01 08:45:01
John6 44 St 20 2011-04-01 13:00:00
John5 66 St 35 2011-04-01 12:00:40
然后,您可以像这样完成最终目标:
SELECT *,count(*) as Count
FROM ( SELECT * FROM tableName ORDER BY created DESC ) as newTable
GROUP BY age;
您必须使用嵌套选择,因为否则将在GROUP BY
之后应用ORDER BY
。
, 正如Stephen指出的那样,您需要执行嵌套选择,但反之则:
SELECT
u.Name,u.Address,u.age,u.NumCount
FROM (SELECT Name,Address,age,count(age) from users group by age) as u
ORDER BY u.NumCount desc