gpt4 book ai didi

mysql - 如何根据单个id获取所有行

转载 作者:行者123 更新时间:2023-11-29 13:03:32 25 4
gpt4 key购买 nike

我有一个具有父/子关系结构的表。

有 3 种类型的实体:

  1. 实际位置(type=1)
  2. 子组(类型=10)
  3. 头组(类型=100)

结构示例

id  parent  name                        type
28 0 Head Group 100
10 28 --Location 1 1
12 28 --Location 2 1
16 28 --Location 3 1
17 28 --Location 4 1
19 28 --Location 5 1
29 28 --Location 6 1
8 28 -Sub Group 1 10
11 8 --Sub Group 1 Location 1 1
30 28 -Sub Group 2 10
13 30 --Sub Group 2 Location 1 1
14 30 --Sub Group 2 Location 2 1
15 30 --Sub Group 2 Location 3 1

如果传入 1d 28(头组),我希望能够选择所有行。

我试图创建一个声明,但我认为这超出了我的能力范围。任何帮助将不胜感激...

SELECT CGroup.id, 
CGroup.parent,
CGroup.name,
CGroup.type
FROM Customer AS CGroup
INNER JOIN Customer AS CSubGroup
ON CSubGroup.parent_id = CGroup.id
WHERE CGroup.parent_id=28

最佳答案

你把事情搞得太复杂了。把事情简单化。简单的查询通常执行速度更快并且错误更少。

// first get all subgroups under the main group
subGroupIds = fetchField('
select group_concat(id)
from CGroup
where parent = 28
and type = 10
')

// then get everything
results = fetchRows('
select *
from CGroup
where parent = 28
or parent in (subGroupIds)
')

如果你真的想“正确”地做到这一点,我建议实现 Nested Set tree .

关于mysql - 如何根据单个id获取所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23026362/

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