MySQL——对多个 COUNT 求和?

标签 mysql

我必须获得一些数据,如果可能的话,应该在一个查询中完成——如果到了紧要关头,我总是可以编写一些 PHP 逻辑来分两次完成,但我认为这样做是可能的在单个查询中。我不知道怎么办!

这是我想做的:

生成一个列表,显示作者的帖子总数。因此,我必须从三个不同的表中COUNT三个不同的列(reviewsID FROM reviews,featuresID FROM features & newsID FROM news)然后SUM它们一起提供一个总数字。这些必须使用 WHERE userID = THE_ID 进行限制才能拥有该单个用户。

同时,我想要一个更简单的查询,从数据库中获取关于他/她的一些信息——userRealName 和 userLevel

SELECT userRealName, userLevel FROM user WHERE (userLevel = 'a' OR userLevel = 'e' OR userLevel ='r')

决赛 table 应该是这样的:

*userRealName*userLevel*articles*
|------------|---------|--------|
|The user    |e        |87      |
|Another user|r        |34      |

这可能吗?

最佳答案

如果没有 MySQL 在这里进行测试,这真的很难做到,但我认为这样的事情会起作用:

SELECT u.userRealName, u.userLevel, COUNT(t.articleID)
FROM user u,
(
    SELECT userID, reviewsID articleID FROM reviews
    UNION ALL
    SELECT userID, featuresID articleID FROM features
    UNION ALL
    SELECT userID, newsID articleID FROM news
) t
WHERE u.userID = t.userID
   AND (u.userLevel = 'a' OR u.userLevel = 'e' OR u.userLevel ='r')
GROUP BY u.userRealName, u.userLevel

关于MySQL——对多个 COUNT 求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2136448/

相关文章:

php - 查找重复行并显示

php - 如何在 laravel 中设置 withCount 条件

mysql - Flask 应用程序中的第二个请求是否有修复 'MySQL connection not available' 的解决方案?

MySQL并发更新

php - 如果行发生更改,MySQL 更改表更改列会抛出错误

php - 如何在 cron 作业中加载 xml

php - 自动设置外键值

mysql - SQL 子查询和 ORDER BY

php - 如何检查是否在 MySQL 和 PHP 中设置了时间戳?

php - 在共享相同 wp_users 和 wp_usermeta 表的两个 Wordpress 安装之间同步所有用户角色。