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。
我有一个结构 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。