php - mysql查询根据特定条件对数据进行分组

标签 php mysql

我正在开发一个基于测验的项目,用户访问并进行测验。我想列出在 5 个模块测验中每个测验中必须出现并失败的用户数量。我正确地理解了这一点。现在,如果用户重新出现在 5 个测验中的任何一个中并通过,他/她不得包含在前面提到的计数中。

我对所有 5 个模块中出现和失败的用户数量进行计数的查询是,

SELECT count(DISTINCT module_id) as module_id from tbl WHERE user_id = $userId AND cleared = 0,

其中 user_id 是用户的 ID,如果失败,则清除设置为 0,如果通过,则设置为 1。 虽然上面的查询统计了用户已经通过的模块数量。我将其用于函数中,然后在 if 语句中进行比较。 我只是想弄清楚我可以在这里进行哪些更改,以便如果用户传递任何模块,它们不应该包含在其中。我已经尝试过,但没有得到正确的查询构建。任何建议都会有帮助。

最佳答案

使用条件聚合:

SELECT user_id
FROM tbl
GROUP BY user_id
HAVING COUNT(DISTINCT module_id) = 5 AND SUM(cleared) = 0;
--             ^^ appeared in all 5 modules        ^^ and failed them all

如果您想将上述查询限制为仅对一个或几个用户进行,那么您可以添加回 WHERE 子句。

关于php - mysql查询根据特定条件对数据进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50288336/

相关文章:

javascript - dabeng 组织结构图 Php Mysql Ajax

mysql - 如何获取 "insert ignore stament"中插入的行数

mysql - 设计包含父实体和子实体的数据库时应考虑哪些因素?

php - 使用多个 php 函数查询单个(mysql)数据库的正确方法

php - 在 PHP 中从 mysql 检索图像时无法查看图像

PHP session 数组值

php - mySQL 删除功能的问题

php - PDO 绑定(bind)参数/值不起作用

php - Symfony - 从请求获取一个上传的文件

带范围的 MySQL LIKE 不起作用