当前位置: 代码迷 >> Oracle开发 >> Oracle中查询后结果集的排序有关问题
  详细解决方案

Oracle中查询后结果集的排序有关问题

热度:72   发布时间:2016-04-24 06:33:27.0
Oracle中查询后结果集的排序问题
源码:
                                      select * from   B_MOD_WARNING A
                                        LEFT JOIN B_MOD_WARNING_PERSON B
                                        ON A.MOD_WARNING_ID = B.MOD_WARNING_ID
                                        
                                        
                                    and  B.SYS_USR_ID IN 257055
                                    
                                    
                                    
                                      INNER JOIN (SELECT T.VLD_SITE_ID,
                                          T.VLD_ENTITY_TYPE_ID
                                        FROM VLD_SITE T
                                        WHERE T.ORG_STATUS               ='A'
                                          CONNECT BY PRIOR T.VLD_SITE_ID = T.VLD_PARENT_SITE_ID
                                          START WITH (T.VLD_SITE_ID = (SELECT VLD_SITE_ID FROM  SYS_USR WHERE USR_LOGIN='admin'))       ) V
                                       ON A.VLD_SITE_ID=V.VLD_SITE_ID 
                                     WHERE A.MAIN_TABLE = 'S_EQUIPMENT_MAIN_TB'
                                       AND B.MOD_WARNING_ID IS NULL 
当我执行这条SQL语句的时候,显示结果如下:

但是现在我必须通过SQL语句去获取257055这个值,于是我把and  B.SYS_USR_ID IN 257055改为了 and  B.SYS_USR_ID IN (SELECT SYS_USR_ID FROM  SYS_USR WHERE USR_LOGIN='admin')  但是这样执行之后结果集的顺序就变了,如图:
,请问为什么会这样,我要用第二种方法实现第一个图的效果,应该怎么实现
------解决思路----------------------
引用:
Quote: 引用:

你没写order,就算是相同的语句,如果没有缓冲,每次取出的结果顺序都不一定是一样的
最稳妥的方式是在最后加上order by

但是我不知道他默认的排序方式啊

结果集显示的顺序默认是数据从数据库中读取的顺序,这个顺序是没办法直接获得的
  相关解决方案