查询两条记录做为一条记录输出

来源:百度知道 编辑:UC知道 时间:2024/06/18 04:56:27
无限级别表
id name parentid
1 a 0
10 b 1
101 c 10
如何在一个查询里 把c的所有父记录全部输出

select * from tablename where id=101
只能到上一级,到根的不行

select * from tablename where parentid in/= (select parentid from tablename where name ='c')
如果有 多条记录name=c 那么用in
只有一条可以直接用=
或者
select * from tablename where parentid = (select top 1 parentid from tablename where name ='c')

这个数据库实现不了,关系数据库的查询优化器对这种没有执行尽头的查询是无法给出执行计划的,因此也就不支持这种查询了.
你只有通过程序,直到再也查不到父结点为止.

但是如果是使用XML数据库的话,或许能够解决这类层次数据的问题.

额...父记录?通过什么字段关联?
不知道理解的有没问题
select * from 表名 where parentid = id and parentid = 10

你用的是什么数据库?Oracle中有递归查询start with ... connect by,其他数据库好像没。

不行就用楼上说的“你只有通过程序,直到再也查不到父结点为止. ”