MYSQL,如何获取条件中的行

MYSQL, how can I get rows in conditions

我有一个结构 role_approvers:

id, role_id, level, user_id, approval_date

行数:

4116, 1300, 1, 1158, 2021-05-28 14:24:34
4117, 1300, 1, 1186, NULL
4596, 1300, 2, 21, NULL

我需要获得 MIN 级别,其中 role_id = 1300 并且此级别上的所有 approval_date 应为 NULL

所以在这种情况下我需要得到level = 2,但是我不知道怎么得到,谁能帮忙查询一下

您可以过滤 role_id = 1300 的 table,按 level 分组,在 HAVING 子句中设置所有日期均为 null 的条件,并且return顶层:

SELECT level
FROM role_approvers
WHERE role_id = 1300
GROUP BY level
HAVING MAX(approval_date) IS NULL
ORDER BY level LIMIT 1

参见demo