MySQL在树形结构中查询指定分类

  假设存在如下图书分类表:

ItemID Name PreID SeqID
1 计算机 0 1
2 操作系统 1 1.2
3 算法 1 1.3
4 云计算 1 1.4
5 体育 0 5
6 球类 5 5.6
7 足球 6 5.6.7

  其中PreID为父节点的ItemIDSeqID为从顶层节点到该节点的路径。若要查询分类体育,球类,足球ItemID,则相应的SQL语句为:

SELECT bc.ItemID
FROM t_book_category AS bc
WHERE 
(
  SELECT GROUP_CONCAT(tbc.Name ORDER BY FIND_IN_SET(tbc.ItemID, REPLACE(bc.SeqID, '.', ',')))
  FROM t_book_category AS tbc
  WHERE FIND_IN_SET(tbc.ItemID, REPLACE(bc.SeqID, '.', ','))
) = '体育,球类,足球';

你可能感兴趣的:(MySQL)