在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/

10-12 07:16