gpt4 book ai didi

MySQL - 在 SELECT 子句中

转载 作者:行者123 更新时间:2023-11-29 06:17:58 25 4
gpt4 key购买 nike

是否可以在 MySQL 的 SELECT 子句中调用 while 语句?

这是我想做的一个例子:

CREATE TABLE `item` (
`id` int,
`parentId` int,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`),
KEY `FK_parentId` (`parentId`),
CONSTRAINT `FK_parentId` FOREIGN KEY (`parentId`) REFERENCES `item` (`id`)
);

我想选择每个项目的根,即更高的祖先(没有 parentId 的项目)。在我看来,我会做这样的事情:

select 
`id` as 'ID',
while `parentId` is not null do `id` = `parentId` end while as 'Root ID'
from
`item`

这当然不行。实现类似目标的更好方法是什么?

编辑

这里是一个示例数据:

id  |   parentId
1 | NULL
2 | 1
3 | 2
4 | 2
5 | 3
6 | NULL
7 | 6
8 | 7
9 | 7

预期结果:

ID  |   RootId
1 | NULL
2 | 1
3 | 1
4 | 1
5 | 1
6 | NULL
7 | 6
8 | 6
9 | 6

谢谢。

最佳答案

只需使用CASE

select 
`id` as 'ID',
CASE `parentId` WHEN is not null THEN `parentId` END as 'Root ID'
from
`item`

关于MySQL - 在 SELECT 子句中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34790941/

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