头疼的查询语句,请各位帮忙看下

KELLYZHANG0913 2008-07-31 03:17:46
表是类似这样的结构

ID def_name parent
0
1 HVAE_x 0
2 HAVE_xx 1
3 HAVE_xxx 2
4 HAVE_xxxx 1

请问如果我想根据HAVE_xxx查询到parent=0的 def_name 查询语句该怎么写?

即传入HAVE_xxx 可查询出 HVAE_x
...全文
91 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
懒得去死 2008-08-01
  • 打赏
  • 举报
回复
假设表名:tt
不考虑性能的情况下用

select a.* from tt as a left join tt as b on a.id = b.parent left join tt as c on b.id = c.parent where c.def_name = 'HAVE_xxx'


既可以满足LZ的需求!
懒得去死 2008-08-01
  • 打赏
  • 举报
回复
这样的查询只能使劲的用LEFT JOIN 才能得到结果。建议LZ改变表结构。
wwwwb 2008-08-01
  • 打赏
  • 举报
回复
select a.*

from tt a inner join tt b

on a.ID = b.parent where a.parent='0'
hpjiang006 2008-08-01
  • 打赏
  • 举报
回复
ID def_name parent
0
1 HVAE_x 0
2 HAVE_xx 1
3 HAVE_xxx 2
4 HAVE_xxxx 1

假设表为tt:

select first.def_name,second.def_name

from tt first,tt second

where first.ID = second.parent
KELLYZHANG0913 2008-08-01
  • 打赏
  • 举报
回复
问题已解决 谢谢各位!
KELLYZHANG0913 2008-07-31
  • 打赏
  • 举报
回复
请问怎么将表进行自身链接呢?
hpjiang006 2008-07-31
  • 打赏
  • 举报
回复
将表进行自身连接
lujunjsp 2008-07-31
  • 打赏
  • 举报
回复
ORACLE 里可以找想这样的父子关系的数据,MYSQL不行
KELLYZHANG0913 2008-07-31
  • 打赏
  • 举报
回复
不确定几层,可能一层,也可能两层甚至更多
只是要根据某一个def_name,循环获取到它的根结点的def_name(即parent=0的def_name)

各位有没有简单一点的方法
WWWWA 2008-07-31
  • 打赏
  • 举报
回复
就要用存储过程了,比较复杂
KELLYZHANG0913 2008-07-31
  • 打赏
  • 举报
回复
如果不确定有几层呢?
WWWWA 2008-07-31
  • 打赏
  • 举报
回复
一般是用递归方法来解决的,如只有两层:
select * from tt where id in(
select parent from tt where id in(
select parent from tt where def_name='HAVE_xxx'))
pandajj 2008-07-31
  • 打赏
  • 举报
回复
建议把用途说一下

57,065

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧