SELECT USER_ID FROM YTFINST_WP_ZJ.SYS_POSITION WHERE ORG_ID =( WITH RPL (ID,PARENT_ID,ORG_CODE) as ( SELECT s.ID,s.PARENT_ID ,s.ORG_CODE FROM YTFINST_WP_ZJ.SYS_ORG s WHERE ID='96301' UNION ALL SELECT child.ID,child.PARENT_ID ,child.ORG_CODE FROM RPL parent,YTFINST_WP_ZJ.SYS_ORG child WHERE parent.id=child.PARENT_ID ) SELECT ORG_CODE FROM RPL ) 有语法错误
时间: 2023-10-03 17:08:09 浏览: 81
RPL_simple_instance.rar_ RPL_contiki RPL_rpl_rpl instance_rpl_in
这个 SQL 查询语句的问题在于 WITH 子句中定义了一个名为 RPL 的公共表达式,但在主查询中并没有使用它。具体来说,你需要在主查询中引用 RPL 表达式,并将其作为子查询的一部分。以下是一个可能的修正版本:
```
SELECT USER_ID
FROM YTFINST_WP_ZJ.SYS_POSITION
WHERE ORG_ID IN (
WITH RPL (ID, PARENT_ID, ORG_CODE) AS (
SELECT s.ID, s.PARENT_ID, s.ORG_CODE
FROM YTFINST_WP_ZJ.SYS_ORG s
WHERE ID = '96301'
UNION ALL
SELECT child.ID, child.PARENT_ID, child.ORG_CODE
FROM RPL parent, YTFINST_WP_ZJ.SYS_ORG child
WHERE parent.id = child.PARENT_ID
)
SELECT ID
FROM YTFINST_WP_ZJ.SYS_ORG
WHERE ORG_CODE IN (
SELECT ORG_CODE
FROM RPL
)
);
```
这个修正版本中,主查询使用了子查询,该子查询使用了 RPL 表达式,而 RPL 表达式又使用了递归查询来获取指定 ID 的所有父级组织机构的编码。在主查询中,使用了 IN 运算符与子查询的结果进行匹配,以获取符合条件的 USER_ID。
阅读全文