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 09:22:17 浏览: 30
如果你使用的是 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 中相同的查询结果了。
orgId = orgId_list[\"org_id\"] TypeError: list indices must be integers or slices, not str
这个错误是因为你尝试使用字符串作为列表的索引,而列表的索引应该是整数或切片。根据你提供的代码,`orgId_list`是一个列表对象,你可以通过整数索引来访问其中的元素。
如果你想要获取 `org_id` 这个值对应的索引,可以尝试使用以下方法:
```python
orgId = orgId_list[orgId_list.index("org_id")]
```
这将返回列表中第一个等于 "org_id" 的元素的索引。请确保在列表中确实存在该值,否则会抛出 `ValueError` 异常。