select count(1), t.ttName from (select tmp.*, sys_dept.name as ttName from(SELECT sys_login_org.dept_id, sys_login_log.usr_id, sys_login_log.usr_name, sys_login_log.work_no, sys_login_log.sys_id, sys_dept.id, sys_dept.`name`, sys_dept.path FROM sys_login_log, sys_login_org, sys_dept WHERE sys_login_log.id = sys_login_org.login_id AND sys_dept.id = sys_login_org.dept_id) tmp left join sys_dept on FIND_IN_SET(sys_dept.id,REPLACE(tmp.path,'/',',')) ) t group by t.ttName-- where tmp.work_no = '-1';SELECTsys_login_log.id as logid, sys_login_org.dept_id, sys_login_log.usr_id, sys_login_log.usr_name, sys_login_log.work_no, sys_login_log.sys_id,-- sys_dept.id, sys_dept.`name`, sys_dept.path FROM sys_login_log, sys_login_org, sys_dept WHERE sys_login_log.id = sys_login_org.login_id AND sys_dept.id = sys_login_org.dept_id and sys_login_log.usr_id = 817441901144702976 order by sys_login_log.id,sys_login_org.dept_id ; select tmp.*, sys_dept.name as ttName, sys_dept.id deptID from (SELECTsys_login_log.id as logid, sys_login_org.dept_id, sys_login_log.usr_id, sys_login_log.usr_name, sys_login_log.work_no, sys_login_log.sys_id,-- sys_dept.id, sys_dept.`name`, sys_dept.path FROM sys_login_log, sys_login_org, sys_dept WHERE sys_login_log.id = sys_login_org.login_id AND sys_dept.id = sys_login_org.dept_id and sys_login_log.usr_id = 817441901144702976) tmp left join sys_dept on FIND_IN_SET(sys_dept.id,REPLACE(tmp.path,'/',',')) order by tmp.logid,deptID; select count(1), count(distinct b.usr_id) as access_person,dept_id, name from ( select l.id, l.usr_id, l.work_no, dd.name, dd.path,dd.id as dept_id,l.sys_id from sys_login_log l left join ( select GROUP_CONCAT(d.path SEPARATOR '/' ) as path, o.login_id from sys_login_org o, sys_dept d where o.dept_id = d.id GROUP BY o.login_id ) a on l.id = a.login_id left join sys_dept dd on FIND_IN_SET(dd.id,REPLACE(a.path,'/',','))-- order by l.id, dept_id ) b group by dept_id, name; select l.id, l.usr_id, l.work_no, dd.name, dd.path,dd.id as dept_id,l.sys_id from sys_login_log l left join ( select GROUP_CONCAT(d.path SEPARATOR '/' ) as path, o.login_id from sys_login_org o, sys_dept d where o.dept_id = d.id GROUP BY o.login_id ) a on l.id = a.login_id left join sys_dept dd on FIND_IN_SET(dd.id,REPLACE(a.path,'/',',')) where dd.id = 1; -- dept person amount select -- a.path, a.user_id, count(1), dd.id, dd.name from sys_dept dd INNER JOIN ( select u.user_id, GROUP_CONCAT(d.path SEPARATOR '/') as path from sys_dept_users u,sys_dept d where u.dept_id = d.id GROUP BY u.user_id) a on FIND_IN_SET(dd.id,REPLACE(a.path,'/',',')) GROUP BY dd.id, dd.name ; select count(1) as access_amount, count(distinct b.usr_id) as access_person,dept_id, name, ttt.total_person from ( select l.id, l.usr_id, l.work_no, dd.name, dd.path,dd.id as dept_id,l.sys_id from sys_login_log l left join ( select GROUP_CONCAT(d.path SEPARATOR '/' ) as path, o.login_id from sys_login_org o, sys_dept d where o.dept_id = d.id GROUP BY o.login_id ) a on l.id = a.login_id left join sys_dept dd on FIND_IN_SET(dd.id,REPLACE(a.path,'/',',')) ) b INNER JOIN ( select count(1) as total_person, dd.id from sys_dept dd INNER JOIN ( select u.user_id, GROUP_CONCAT(d.path SEPARATOR '/') as path from sys_dept_users u,sys_dept d where u.dept_id = d.id GROUP BY u.user_id) a on FIND_IN_SET(dd.id,REPLACE(a.path,'/',',')) GROUP BY dd.id) ttt on b.dept_id = ttt.id group by dept_id, name;