MySQL查询:获取指定用户作为管理者/主管的部门
MySQL查询符合条件的部门语句
需求说明
查询所有满足以下条件的部门:
- 部门的
manager_id等于指定用户ID; - 或者当部门的
manager_id为NULL时,supervisor_id等于指定用户ID。
针对指定用户username1(user_id=1),需返回IT-admin和IT-hardware部门。
直接使用用户ID查询的语句
SELECT dept_id, dept_name FROM table_department WHERE manager_id = 1 OR (manager_id IS NULL AND supervisor_id = 1);
通过用户名关联用户表查询的语句
如果仅知道用户名,不知道用户ID,可以关联table_users表查询:
SELECT d.dept_id, d.dept_name FROM table_department d JOIN table_users u ON (d.manager_id = u.user_id) OR (d.manager_id IS NULL AND d.supervisor_id = u.user_id) WHERE u.username = 'username1';
语句说明
- 第一个语句直接基于部门表的字段条件筛选,无需关联其他表,查询效率更高;
- 第二个语句通过关联用户表,实现用用户名作为查询条件的需求,适配不知道用户ID的场景。
内容的提问来源于stack exchange,提问作者Ainz
相关产品推荐
相关产品推荐

