是否可以在 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/