您可以使用递归查询来实现这个需求。以下是一个示例的SQL查询语句:

WITH RECURSIVE direct_supervisor AS (
  SELECT emp_id, supervisor_id, security_level
  FROM employees
  WHERE emp_id = '申请人的ID'
  
  UNION ALL
  
  SELECT e.emp_id, e.supervisor_id, e.security_level
  FROM employees e
  INNER JOIN direct_supervisor ds ON e.emp_id = ds.supervisor_id
  WHERE ds.security_level < 30
)
SELECT *
FROM direct_supervisor
WHERE security_level >= 30;

在这个查询中,首先选取了申请人的直接上级,并将其放入一个递归查询的结果集中。然后,通过与 direct_supervisor 的结果集关联,不断地向上查找直到找到安全级别大于等于30的直接上级为止。

请注意将 employees 替换为您的实际员工表名,并将 '申请人的ID' 替换为您要查询的具体申请人的ID

sql 为申请人的直接上级当直接上级安全级别30时为直接上级的的直接上级至安全级别=30为止

原文地址: http://www.cveoy.top/t/topic/ixJh 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录