gpt4 book ai didi

php - 选择自引用表上未被任何其他行指向的行

转载 作者:可可西里 更新时间:2023-11-01 07:29:46 25 4
gpt4 key购买 nike

我有一个自引用表,但我无法找到没有任何其他行指向它的行 - 或者,换句话说,获取不是父项的行对任何其他人来说,这意味着,当然,他们没有 child 。

这是我的示例数据表:

+----+------+--------+
| id | name | cat_id |
+----+------+--------+
| 1 | C1 | |
| 2 | C2 | |
| 3 | C3 | 1 |
| 4 | C4 | 2 |
| 5 | C5 | 2 |
| 6 | C6 | 5 |
+----+------+--------+

在这里,cat_id是 parent 。这是一个“表示”:

.
├── C1
| └── <strong>C3</strong>
└── C2
├── <strong>C4</strong>
└── C5
└── <strong>C6</strong>

如上所示,类别可以无限期地包含子类别,它们通过指向 cat_id 来定义。 .如果它是一个“主要”类别,它就不会指向任何东西。通过选择 NULL,我可以获得所有具有“父级”的类别在cat_id ,但如何选择没有“子项”的类别?

我试过:

SELECT
c1.id, c1.name, c1.cat_id
FROM
cat c1
INNER JOIN
cat c2
ON
c1.id != c2.cat_id

但这不仅会返回重复的行,还会包括有子项的类别。 预期结果在表示中以粗体显示。您可以在 this SQLFiddle 中运行测试.

我怎样才能做到这一点?不用递归能实现吗?

最佳答案

这可能是您在初始查询中的目标:

select a.*
from cat a left outer join
cat b on a.id = b.cat_id
where b.cat_id is null

关于php - 选择自引用表上未被任何其他行指向的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45766824/

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