我的表结构:
--------------------------
|Categories |
--------------------------
|id |parent_id|title |
--------------------------
|1 |null |t1 |
--------------------------
|2 |1 |t2 |
--------------------------
|3 |1 |t3 |
--------------------------
|4 |2 |t4 |
--------------------------
|5 |4 |t5 |
--------------------------
|6 |null |t6 |
--------------------------
我需要找出一个给定的项目/类别和它的根项目/类别之间有多少个项目,包括指定的项目和根项目。
例如在这个表中 title=t5
会数到4( t1
-> t2
-> t4
-> t5
).
mysql版本:5.6.21
3条答案
按热度按时间7rfyedvj1#
试试这个:
如果这是不正确的,那么我不明白你的问题,对不起。
e0bqpujr2#
在mysql<v8.0中,您唯一真正的选择是存储函数。我想这个能帮到你;它模拟从一个子表递归回表,直到找到一个没有父项的项为止(
parent_id
为空):输出:
ws51t4hk3#
如果你的mysql版本支持
cte
你可以试着用cte递归来实现它。架构(mysql v8.0)
查询#1
db fiddle视图