MySQL数据库|查询count()并同时选择

时间:2016-05-08 15:57:13

标签: mysql

我正在使用MySql工作台5.7来运行它。

我正在尝试获取此查询的结果:

SELECT COUNT(Users) FROM UserList.custumers;

和这个查询:

SELECT Users FROM UserList.custumers;

在同一个表中,这意味着我想要一列中的用户列表和另一列中的总用户数量。

当我尝试这个时:

SELECT Users , COUNT(Users) FROM UserList.custumers;

我得到一个正确计数的行,但只有我列表中的第一个用户....

2 个答案:

答案 0 :(得分:3)

您可以使用交叉联接,因为您知道计数查询将导致一行...您想要在每一行重复其值。

<script>

或者您可以在选择中运行计数....我更喜欢第一个计数,因为计数只需要进行一次。

SELECt users, userCount
FROM  userlist.custumers
CROSS JOIN  (Select count(*) UserCount from userlist.custumers)

或者在支持窗口功能(不是mySQL)的环境中,您可以SELECT users, (SELECT count(*) cnt FROM userlist.custumers) as userCount FROM userlist.custumers

你获得一行的原因是mySQL对count(*) over (partition by 1) as userCount的扩展,它将从非聚合列中选择一个值,以便在使用不带group by子句的聚合时显示。如果您在选择中添加GROUP BY,则无法获得所有用户的计数。因此需要内联选择或交叉连接。

考虑: - 1记录不是所有用户

group by

vs - 所有用户错误计数

SELECT Users , COUNT(Users) FROM UserList.custumers;  

vs - 我相信你的意思

SELECT Users , COUNT(Users) FROM UserList.custumers group by users;

答案 1 :(得分:0)

在SELECT中使用子查询。

Select Users, 
       (SELECT COUNT(Users) FROM UserList.custumers) as total
FROM UserList.custumers;