SELECT ORG_ID FROM GSYS_ORG START WITH ORG_ID = #{orgid} CONNECT BY PRIOR ORG_ID = ORG_PID 怎么改为mysql的语句其中musql为8.0以下的版本
时间: 2024-02-10 17:22:17 浏览: 98
如果你使用的是 MySQL 8.0 以下的版本,那么可以使用下面的语句来模拟 Oracle 中的 CONNECT BY PRIOR 递归查询:
SELECT DISTINCT t1.org_id
FROM gsys_org t1
LEFT JOIN gsys_org t2 ON t1.org_id = t2.org_pid
LEFT JOIN gsys_org t3 ON t2.org_id = t3.org_pid
LEFT JOIN gsys_org t4 ON t3.org_id = t4.org_pid
LEFT JOIN gsys_org t5 ON t4.org_id = t5.org_pid
WHERE t1.org_id = #{orgid} OR t2.org_id = #{orgid} OR t3.org_id = #{orgid} OR t4.org_id = #{orgid} OR t5.org_id = #{orgid};
这里使用了多个左连接,每个连接表示了树的一层,这样可以模拟 CONNECT BY PRIOR 的递归查询。不过,如果你的数据比较复杂,嵌套层数比较深,那么这种方法可能性能会比较低下。
相关问题
SELECT ORG_ID FROM GSYS_ORG START WITH ORG_ID = #{orgid} CONNECT BY PRIOR ORG_ID = ORG_PID 怎么改为mysql的语句
你可以将该 Oracle SQL 查询语句转换为 MySQL 递归查询语句,具体的语句如下:
WITH RECURSIVE org_tree AS (
SELECT org_id
FROM gsys_org
WHERE org_id = #{orgid}
UNION ALL
SELECT o.org_id
FROM gsys_org o
JOIN org_tree ot ON ot.org_id = o.org_pid
)
SELECT org_id
FROM org_tree;
这样就可以在 MySQL 中实现与 Oracle 中相同的查询结果了。
SELECT T2.id, T2.org_type, T2.org_name FROM ( SELECT @r AS _id, (SELECT @r := p_id FROM t_organization WHERE id = _id) AS parent_id, @l := @l + 1 AS lvl FROM (SELECT @r := #{orgId}, @l := 0) vars, t_organization h WHERE @r <![CDATA[<>]]> 0) T1 JOIN t_organization T2 ON T1._id = T2.id where T2.org_type = '1' ORDER BY T2.org_type DESC limit 1翻译一下这段sql 加上注释
注释版的 SQL 如下:
SELECT T2.id, T2.org_type, T2.org_name -- 选择 t_organization 表中的 id, org_type 和 org_name 字段
FROM (
SELECT
@r AS _id, -- 将 @r 的值赋给 _id
(SELECT @r := p_id FROM t_organization WHERE id = _id) AS parent_id, -- 将 t_organization 表中 id=_id 的记录的 p_id 字段值赋给 @r, 并将该值赋给 parent_id
@l := @l + 1 AS lvl -- 将 @l 的值加1后赋给 lvl
FROM
(SELECT @r := #{orgId}, @l := 0) vars, -- 定义并初始化 @r 和 @l 变量
t_organization h -- 查询 t_organization 表
WHERE @r <> 0 -- 当 @r 不等于 0 时,继续执行
) T1
JOIN t_organization T2 ON T1._id = T2.id -- 将 T1 中的 _id 和 t_organization 表中的 id 进行 JOIN 操作
WHERE T2.org_type = '1' -- 过滤 org_type 字段等于 1 的记录
ORDER BY T2.org_type DESC -- 按照 org_type 字段的降序排序
LIMIT 1 -- 只选择1条记录
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231045021.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045021.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)