2 zhaojie186 zhaojie186 于 2014.08.02 23:13 提问

SQL大神帮忙解决个问题

表结构
ID,NAME,PARENTID
1,动物,null
2,猫,1
3,狗,1
4,人类,null
5,亚洲人,4
6,非洲人,4
7,狼,1
8,猪,1
9,美洲人,4
10,植物,null
11,月季,10
SELECT查询结果让数据分好组,
就是比如说这个例子里id号7和8弄到猫和狗下面。
因为实际问题是新插入一条数据可能父节点是1或者4,但是希望查询结果是分好组的
这个用SQL怎么实现?

2个回答

shendixiong
shendixiong   2014.08.04 17:44

你说的应该是树形结构!因为SQLServer用的比较少。所以不太了解,你可以搜索下SQLServer树形结构!

XIN_WILLIAM
XIN_WILLIAM   2014.08.12 21:44

不知道这样的结果,你需不需要哦
SQL如下:
create table t_a(
ID int primary key,
NAME varchar(50),
PARENTID int
)

insert t_a(
ID,
NAME,
PARENTID
)
select 1,'动物',null union all
select 2,'猫',1 union all
select 3,'狗',1 union all
select 4,'人类',null union all
select 5,'亚洲人',4 union all
select 6,'非洲人',4 union all
select 7,'狼',1 union all
select 8,'猪',1 union all
select 9,'美洲人',4 union all
select 10,'植物',null union all
select 11,'月季',10

----------查询语句
select a.ID,
a.NAME as PARENTNAME,
t.ID AS CHILDID,
t.NAME AS CHILDNAME
from t_a a
inner join (select DISTINCT t.ID,
t.NAME,
t.parentID
from t_a t left join (select PARENTID
from t_a )t1 on t.ID=t1.PARENTID) t
on A.ID=T.PARENTID
ORDER BY t.parentID

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!