oracle 如何修改表的字段(列)的排列顺序

EVKJ 2014-03-06 10:20:17
今天遇到一个问题,需要按照一定的顺序为数据库表字段进行排序,尽量不实用sql语句进行操作,使用pl/sql Developer 能不能实现该功能。
例如表:dyml01
列的顺序为:
a,b,c
现在我想要的顺序为:
a,c,b
...全文
24523 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
hsiamer 2016-11-15
  • 打赏
  • 举报
回复
create table dyml01_new as select a,c,b from dyml01 ; drop table dyml01 ; alter table dyml01_new rename to dyml01
qq_23557429 2015-04-26
  • 打赏
  • 举报
回复
如果有SYS帐号 简单sys更改表架构字段顺序 --查询所需要的表的ID号码 select * from sys."_CURRENT_EDITION_OBJ" where name ='N_VISAP' --对ID进行调整 select * FROM sys.col$ where obj# ='80711' for update 随便你调整而且 查询属性的时候同时变动位置
EVKJ 2014-03-06
  • 打赏
  • 举报
回复
引用 13 楼 hidanger521 的回复:
select distinct(a.column_id),a.column_name,b.comments
 from user_tab_columns a,user_col_comments  b           
 where a.table_name =UPPER( 'dyml01') and b.table_name=UPPER('dyml01') and a.COLUMN_NAME = b.column_name            
 order by decode(a.column_id,4,1,2,2,1,3)
嗯嗯,要的就是这个效果,谢谢。
流浪川 2014-03-06
  • 打赏
  • 举报
回复
select distinct(a.column_id),a.column_name,b.comments
 from user_tab_columns a,user_col_comments  b           
 where a.table_name =UPPER( 'dyml01') and b.table_name=UPPER('dyml01') and a.COLUMN_NAME = b.column_name            
 order by decode(a.column_id,4,1,2,2,1,3)
流浪川 2014-03-06
  • 打赏
  • 举报
回复
如果是是想得到如下结果如: 1,字段1,注释1 4,字段4,注释4 2,字段2,,注释2 ... 那就像我说的,直接decode自定义排序就好了。。
EVKJ 2014-03-06
  • 打赏
  • 举报
回复
引用 10 楼 hidanger521 的回复:
[quote=引用 9 楼 lu010610 的回复:]
[quote=引用 7 楼 hidanger521 的回复:]
[quote=引用 6 楼 yongzhen150 的回复:]
[quote=引用 3 楼 hidanger521 的回复:]
自定义排序?

嗯嗯,可以这样认为把。怎么解决呢?[/quote]
WITH a AS
(
SELECT 'a' t FROM dual UNION ALL
SELECT 'b' FROM dual UNION ALL
SELECT 'c' FROM dual)
SELECT * FROM a ORDER BY DECODE(t, 'a',1,'c',2,'b',3)
[/quote]他的意思应该是表列的顺序排序,select * from t ,结果是 列 a,列b,列c ,他要的结果是 列a,列c,列b[/quote]
没明白。。
比如select a,b,c from 表。。想查select a,c,b from 表???
如果是想适配结果集字段顺序的话,还是写函数重组sql好了。。
思路也是DECODE(t, 'a',1,'c',2,'b',3)。。[/quote]
现在的情况是这样的:
我首先使用sql语句获得相应表的字段列名和注释内容和列的id,sql语句如下:
select distinct(a.column_id),a.column_name,b.comments
from user_tab_columns a,user_col_comments b
where a.table_name =UPPER( 'dyml01') and b.table_name=UPPER('dyml01') and a.COLUMN_NAME = b.column_name
order by a.column_id
截图如下:

我就是想如何改变他们的顺序。
流浪川 2014-03-06
  • 打赏
  • 举报
回复
引用 9 楼 lu010610 的回复:
[quote=引用 7 楼 hidanger521 的回复:] [quote=引用 6 楼 yongzhen150 的回复:] [quote=引用 3 楼 hidanger521 的回复:] 自定义排序?
嗯嗯,可以这样认为把。怎么解决呢?[/quote]
WITH a AS
(
SELECT 'a' t FROM dual UNION ALL
SELECT 'b' FROM dual UNION ALL
SELECT 'c' FROM dual)
SELECT * FROM a ORDER BY DECODE(t, 'a',1,'c',2,'b',3)
[/quote]他的意思应该是表列的顺序排序,select * from t ,结果是 列 a,列b,列c ,他要的结果是 列a,列c,列b[/quote] 没明白。。 比如select a,b,c from 表。。想查select a,c,b from 表??? 如果是想适配结果集字段顺序的话,还是写函数重组sql好了。。 思路也是DECODE(t, 'a',1,'c',2,'b',3)。。
_拙计 2014-03-06
  • 打赏
  • 举报
回复
引用 7 楼 hidanger521 的回复:
[quote=引用 6 楼 yongzhen150 的回复:] [quote=引用 3 楼 hidanger521 的回复:] 自定义排序?
嗯嗯,可以这样认为把。怎么解决呢?[/quote]
WITH a AS
(
SELECT 'a' t FROM dual UNION ALL
SELECT 'b' FROM dual UNION ALL
SELECT 'c' FROM dual)
SELECT * FROM a ORDER BY DECODE(t, 'a',1,'c',2,'b',3)
[/quote]他的意思应该是表列的顺序排序,select * from t ,结果是 列 a,列b,列c ,他要的结果是 列a,列c,列b
流浪川 2014-03-06
  • 打赏
  • 举报
回复
临时解决还可以,从长期维护建议还是及时调整表结构,增加辅助排序字段或者重新建表等。
流浪川 2014-03-06
  • 打赏
  • 举报
回复
引用 6 楼 yongzhen150 的回复:
[quote=引用 3 楼 hidanger521 的回复:] 自定义排序?
嗯嗯,可以这样认为把。怎么解决呢?[/quote]
WITH a AS
(
SELECT 'a' t FROM dual UNION ALL
SELECT 'b' FROM dual UNION ALL
SELECT 'c' FROM dual)
SELECT * FROM a ORDER BY DECODE(t, 'a',1,'c',2,'b',3)
EVKJ 2014-03-06
  • 打赏
  • 举报
回复
引用 3 楼 hidanger521 的回复:
自定义排序?
嗯嗯,可以这样认为把。怎么解决呢?
EVKJ 2014-03-06
  • 打赏
  • 举报
回复
引用 2 楼 lu010610 的回复:
晕,要么你建视图,要么你重新建表。。。,不然没什么好办法吧
因为数据库表中已经有一部分数据了,不能重新删除了重新录入的,不知道怎么解决了,希望能帮忙解决一下。
EVKJ 2014-03-06
  • 打赏
  • 举报
回复
引用 楼主 yongzhen150 的回复:
今天遇到一个问题,需要按照一定的顺序为数据库表字段进行排序,尽量不实用sql语句进行操作,使用pl/sql Developer 能不能实现该功能。 例如表:dyml01 列的顺序为: a,b,c 现在我想要的顺序为: a,c,b
就是想自定义排序,字段顺序可以任意调整。使用sql语句是: select object_id from all_objects where owner = 'FINACE' and object_name = 'INCOME' ; select obj#,col#,name from sys.col$ where obj#=73626; 如何不实用sql语句实现,因为到时是客户操作这些顺序。
流浪川 2014-03-06
  • 打赏
  • 举报
回复
自定义排序?
_拙计 2014-03-06
  • 打赏
  • 举报
回复
晕,要么你建视图,要么你重新建表。。。,不然没什么好办法吧
CT_LXL 2014-03-06
  • 打赏
  • 举报
回复
引用 楼主 yongzhen150 的回复:
今天遇到一个问题,需要按照一定的顺序为数据库表字段进行排序,尽量不实用sql语句进行操作,使用pl/sql Developer 能不能实现该功能。 例如表:dyml01 列的顺序为: a,b,c 现在我想要的顺序为: a,c,b
请问你排序的依据是什么

3,491

社区成员

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

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