Vir*_*ral 6 mysql sql hierarchy
我有一个父子关系的表我想要递归查询的帮助
表结构
roleId, roleName, parentId
1 Admin 0
2 Backup Admin 1
3 Office User 1 0
4 User 1 3
5 User 2 3
6 Office User 2 0
7 Off User 1 6
Run Code Online (Sandbox Code Playgroud)
我试图进行递归查询,但我无法做,请建议我如何查询数据库,例如
Admin
-- Backup Admin
Office User 1
-- User 1
-- User 2
Office User 2
-- Off User 1
Run Code Online (Sandbox Code Playgroud)
如上所述,这并不是真正的递归,但如果您知道最多需要多少步深度,则可以使用以下内容(也许使用 PHP 生成查询):
我首先将父 ID 设置为 NULL 而不是 0,但这是个人偏好。
SELECT * FROM table t1
LEFT JOIN table t2 ON t2.parent_id = t1.role_id
LEFT JOIN table t3 ON t3.parent_id = t2.role_id
WHERE t1.parent_id IS NULL
Run Code Online (Sandbox Code Playgroud)
^^ 在这种情况下,无论你需要深入多少。
[下一点不严格相关]
然后,您可以按照以下方式操作输出:
SELECT
(CASE
WHEN (t1.name IS NULL AND t2.name IS NULL) THEN t3.name
WHEN (t1.name IS NULL AND t2.name IS NOT NULL) THEN t2.name
ELSE t1.name END) AS first,
(CASE
WHEN (t1.name IS NOT NULL AND t2.name IS NOT NULL) THEN t2.name
WHEN (t2.name IS NULL AND t3.name IS NOT NULL) THEN NULL
ELSE t3.name END) AS second,
(CASE
WHEN (t1.name IS NOT NULL) THEN t3.name
ELSE NULL END) AS third
FROM
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2401 次 |
| 最近记录: |