我的表结构是这样的:
create table tbsort
(
st_Id bigint not null auto_increment,//自增ID
st_ParentId bigint default null,//父类别ID(从自增ID中取)
st_Name varchar(20) default null,//名称
st_Re varchar(200),//备注
PRIMARY KEY(st_Id)
);
+-------+-------------+---------------+-----------+
| st_Id | st_ParentId | st_Name | st_Re |
+-------+-------------+---------------+-----------+
| 1 | NULL | java | NULL |
| 2 | NULL | .net | NULL |
| 3 | NULL | oracle | NULL |
| 4 | NULL | ruby | NULL |
| 5 | 1 | struts | NULL |
| 6 | 1 | Hibernate | NULL |
| 7 | 1 | Spring | NULL |
| 8 | 5 | Action | NULL |
| 9 | 8 | DispathAction | NULL |
| 10 | 2 | asp.net | NULL |
+-------+-------------+---------------+-----------+
这是数据.如果我想要查询出st_Id=1下的所有的子类别(包括子类别的子类别),
这个查询要怎么写?
create table tbsort
(
st_Id bigint not null auto_increment,//自增ID
st_ParentId bigint default null,//父类别ID(从自增ID中取)
st_Name varchar(20) default null,//名称
st_Re varchar(200),//备注
PRIMARY KEY(st_Id)
);
+-------+-------------+---------------+-----------+
| st_Id | st_ParentId | st_Name | st_Re |
+-------+-------------+---------------+-----------+
| 1 | NULL | java | NULL |
| 2 | NULL | .net | NULL |
| 3 | NULL | oracle | NULL |
| 4 | NULL | ruby | NULL |
| 5 | 1 | struts | NULL |
| 6 | 1 | Hibernate | NULL |
| 7 | 1 | Spring | NULL |
| 8 | 5 | Action | NULL |
| 9 | 8 | DispathAction | NULL |
| 10 | 2 | asp.net | NULL |
+-------+-------------+---------------+-----------+
这是数据.如果我想要查询出st_Id=1下的所有的子类别(包括子类别的子类别),
这个查询要怎么写?
说明与st_Id关联的所有数据
from tbsort where st_ParentId=1 or(st_ParentId in (select st_Id from tbsort where st_ParentId=1))