我正在使用MySql工作台5.7来运行它。
我正在尝试获取此查询的结果:
SELECT COUNT(Users) FROM UserList.custumers;
和这个查询:
SELECT Users FROM UserList.custumers;
在同一个表中,这意味着我想要一列中的用户列表和另一列中的总用户数量。
当我尝试这个时:
SELECT Users , COUNT(Users) FROM UserList.custumers;
我得到一个正确计数的行,但只有我列表中的第一个用户....
答案 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;