select CASE WHEN d.OFFICE_TYPE = '0' AND c.OFFICE_TYPE = '21' THEN c.OFFICE_TYPE WHEN d.OFFICE_TYPE = '21' THEN d.OFFICE_TYPE ELSE '1' END AS OFFICE_TYPE FROM (SELECT ID,PARENT_ID,OFFICE_TYPE FROM SYS_OFFICE) c RIGHT JOIN ( SELECT COALESCE(b.PARENT_ID, '0') as PARENT_ID, CASE WHEN a.OFFICE_TYPE = '21' THEN a.OFFICE_TYPE WHEN b.OFFICE_TYPE = '21' THEN b.OFFICE_TYPE ELSE '0' END AS OFFICE_TYPE FROM (SELECT ID,PARENT_ID,OFFICE_TYPE FROM SYS_OFFICE) a LEFT JOIN ( SELECT ID ,PARENT_ID,OFFICE_TYPE FROM SYS_OFFICE) b ON a.PARENT_ID = b.ID WHERE a.ID = 'CA6437DB5A18451CAEA74D2FDA63BDA6' ) d ON c.ID = d.PARENT_ID WHERE d.PARENT_ID is not null ;
时间: 2024-04-14 10:32:05 浏览: 170
mysql_proc_page_order.zip_page_proc_page_排序MYSQL
这是一段SQL查询语句,它使用了CASE WHEN语句来根据条件选择不同的值,并使用JOIN操作将两个子查询的结果进行连接。下面是对这段语句的解释:
1. 首先,从SYS_OFFICE表中选择ID、PARENT_ID和OFFICE_TYPE列,并将结果作为子查询c。
2. 然后,使用COALESCE函数将b.PARENT_ID的null值替换为'0',并将a.PARENT_ID与b.ID进行连接,得到一个子查询d。在这个子查询中,根据不同的条件,使用CASE WHEN语句选择不同的OFFICE_TYPE值。
3. 最后,通过RIGHT JOIN将子查询c和子查询d进行连接,连接条件是c.ID等于d.PARENT_ID。并且通过WHERE子句过滤掉d.PARENT_ID为null的结果。
4. 最终,通过SELECT子句选择CASE WHEN语句的结果,并将其命名为OFFICE_TYPE。
总体来说,这个查询语句的目的是根据一些条件选择不同的OFFICE_TYPE值,并将结果返回。具体的逻辑和条件需要根据实际需求来理解和解释。
阅读全文