欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

oracle同一张表内使用in语句查询,多层嵌套怎么进行优化

更新时间: 2014-01-05 02:11:05 责任编辑: Author_N1

 

Oracle同一张表内使用In语句查询,多层嵌套如何进行优化?
select * from wms_depot T where T.DEPOTID IN 
(select T.DEPOTID from wms_depot T where T.DEPOTID 
IN (select T.DEPOTID from wms_depot T where T.DEPOTID = 10002 OR T.DEPOTPARENTID = 10002)
OR T.DEPOTPARENTID IN (select T.DEPOTID from wms_depot T where T.DEPOTID = 10002 OR T.DEPOTPARENTID = 10002))
OR T.DEPOTPARENTID IN (select T.DEPOTID from wms_depot T where T.DEPOTID 
IN (select T.DEPOTID from wms_depot T where T.DEPOTID = 10002 OR T.DEPOTPARENTID = 10002)
OR T.DEPOTPARENTID IN (select T.DEPOTID from wms_depot T where T.DEPOTID = 10002 OR T.DEPOTPARENTID = 10002))
--参考方法--
可以使用ORACLE中的集合函数进行优化。
--参考方法--
看了半天才看明白,根据一个部门id求出它的下面所有的部门,嵌套这么层干嘛啊,汗。。
看看下面的写法是否满足你的需求:

SELECT t.*
  FROM wms_depot t
 START WITH t.DEPOTID = 10002
CONNECT BY PRIOR t.DEPOTID = t.DEPOTPARENTID
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:11:05
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/6693/
本文WWW.DOC100.NET DOC100.NET版权所有。