mysql 在同一个表上组合不同的 count()

标签 mysql

我的数据库包含一个“lastOnline”时间戳变量,它在用户登录时获取更新。我想用它来检索 3 个值

[The total amount of users][users online today][users online in the last hour].

我可以单独做每个语句

SELECT count(u.id) AS usersTotal FROM user u

SELECT count(u.id) AS usersDay FROM user u
WHERE u.lastOnline >= now() - INTERVAL 1 DAY

SELECT count(u.id) AS usersHour FROM user u
WHERE u.lastOnline >= now() - INTERVAL 1 HOUR

但我无法将其中 3 个加入/联合到一个查询中

谢谢

最佳答案

你可以使用:

SELECT count(u.id) AS usersTotal 
      ,SUM(u.lastOnline >= now() - INTERVAL 1 DAY)  AS usersDay
      ,SUM(u.lastOnline >= now() - INTERVAL 1 HOUR) AS usersHour
FROM user u;

工作原理:

u.lastOnline >= now() - INTERVAL 1 DAY 返回 true(1) 或 false(0)。

关于mysql 在同一个表上组合不同的 count(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47613382/

相关文章:

mysql INNER_JOIN 子查询

mysql - sql如何将两个表中的三个查询合并为一个查询

mysql - Docker:无法启动mysql

php - 拉出空白结果

mysql - 如何将多个表连接在一起

php - 检查两个特定值是否出现在数据库的同一行中

mysql同时插入限制

c# - 将硬编码数据传输到数组

mysql - 如何创建一个触发器,将相邻行中一列的数据更新 10 次?

MySQL GROUP BY 带排序