在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
谢谢您。
最佳答案
只是用例
select
`id` as 'ID',
CASE `parentId` WHEN is not null THEN `parentId` END as 'Root ID'
from
`item`
关于mysql - MySQL-在SELECT子句中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34790941/