一直比较疑惑于select语句的字段排序问题。
select * from tableName,是按怎样的规则排序的?
例如tableName表中有字段col1,col2,col3,col4四个字段,
一般情况下查询出来的顺序应该是col1,col2,col3,col4.但我修改了表tableName,在后添加了字段 col5,col6。
然后再select * from tableName时,顺序却乱了,变成了 col3,col2,col4,col1,col5,col6。但并不是所有的修改了的表都会出现这种情况。请各位指教!!注:我是在程序中使用的"select * .......",查询出来的结果字段顺序乱了。

解决方案 »

  1.   

    建议楼主还是采取显示排序(order by 列名)
      

  2.   

    是按 user_tab_columns 中的 column_id(1, 2, 3, 4, 5) 的顺序排列的
      

  3.   

    user_tab_columns 中的 column_id(1, 2, 3, 4, 5)  要注意系统结构的表
      

  4.   

    什么情况下column_id会乱呢?看来也不是增加字段就会乱
      

  5.   

    呵呵,是可以直接将字段标出来查询。
    不过我想搞懂这是怎么回事,那么什么情况下column_id(......)会乱呢?
      

  6.   

    我又同时在两个库中进行了上述添加字段的操作,结果如下:
    数据库一:顺序没有变,column_id(1,2,3,4,5,6)
    数据库二:顺序变化 column_id(6,1,2,3,4,5)
    但是在sql/plus下查询 select * from tableName 时,两者显示的顺序都是 col1,col2,col3,col4,col5,col6,顺序显示的。
    但在程序中取时,数据库二的顺序就是col6,col1,col2.......
      

  7.   

    是不是顺序有什么关系,建议select的时候把列名都列出来,不要使用select * ,前几天我们项目就遇到了因为select *而产生的意料之外的错误,因为存储过程改动太大,只有删除原表重建
      

  8.   

    楼上说的好,不要动不动就select *,这种习惯不好.