gpt4 book ai didi

sql - MySql 中的分层数据

转载 作者:可可西里 更新时间:2023-11-01 06:47:27 25 4
gpt4 key购买 nike

我有一个带有父子关系的表,我需要有关递归查询的帮助

表结构

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

我正在尝试进行递归查询,但我做不到请建议我应该如何查询数据库例如

  Admin
-- Backup Admin
Office User 1
-- User 1
-- User 2
Office User 2
-- Off User 1

最佳答案

正如上面所指出的,这并不是真正的递归,但如果您知道最多需要执行多少步,您可以使用这些方法(也许使用 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

^^ 在这种情况下,无论你需要深入到何种程度。

[下一点不严格相关]

然后您可以按照以下方式操作输出:

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

关于sql - MySql 中的分层数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2347067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com