我在弄一个编程论坛,我的数据库表module版块表是这样的:
MODULEID        NUMBER          版块ID          主键
MODULENAME      VARCHAR2(64)    版块名称        非空
TYPE            VARCHAR2(64)    版块类别        非空
DESCRIPTION     VARCHAR2(256)   版块描述       版块类别有三种:数据库,开发语言,非技术区。
现在我想用sql语句把版块信息,按照先数据库类,再开发语言类,最后非技术区类这个顺序将版块信息全部显示出来。可是这个sql语句有点无从下手,求大家帮帮忙啊,谢谢!!!

解决方案 »

  1.   

    一般来说,TYPE会用代码或者数字来表示,(一般会另建个代码名称表,利于修改,不会直接把名称写到每张表区)
    比如10是数据库类,20是开发语言类,30是非技术区
    那SQL出来,直接最后加ORDER BY TYPE 就可以了如果里面是写的中文,那就用ORDER BY TYPE DESC 
      

  2.   

    row_number() over (paration by 版块类别 order by 版块名称 desc )
      

  3.   

    如果我不改动表的结构,能够用sql语句写出来吗?
    select * from module 
    order by type desc;
    这个出来的顺序好象不符合要求。不好意思我上面的顺序说错了:
    应该是开发语言->数据库->非技术区请问用sql如何实现这个特定的顺序排列呢?
      

  4.   

    开发语言-> 数据库-> 非技术区 如果是这样的顺序,那用下面的方法试试
    select *
    from 
    ( select decode(TYPE,'开发语言',1,'数据库',2,3) rn,MODULENAME,type,DESCRIPTION from module 
    ) a
    order by a.rn