select rownum from dual connect by rownum<=100
如果是对表中的数据排序后生成行号,可以用窗口函数:
select row_number() over ([partition by part_fieldname] order by sort_fieldname[desc]) ,fieldname1,fieldname2 from t
顺着你的思路说:现在是按VV1,VV2,VV3,VV4,VV5排序(适用于任意类型的字段):select no=
(select count(1) from aaa t where
t.vv1<o.vv1 or --一个字段排序到此为止,但把<换成<=
t.vv1=o.vv1 and t.vv2<o.vv2 or--两个到此为止,但把最后的<换成<=
t.vv1=o.vv1 and t.vv2=o.vv2 and t.vv3<o.vv3 or--三个、四个以此类推
t.vv1=o.vv1 and t.vv2=o.vv2 and t.vv3=o.vv3 and t.vv4<o.vv4 or
t.vv1=o.vv1 and t.vv2=o.vv2 and t.vv3=o.vv3 and t.vv4=o.vv4 and t.vv5<=o.vv5
),*
from aaa o
order by vv1,vv2,vv3,vv4,vv5
------------------------------
看出来了吧?有多少个变量排序,就写多少层,书写起来麻烦,但查询起来,一个和多个速度基本是一样的,没有多大差别。
按照规律书写也并不麻烦,
规律总结一下,就是,
一层层复制,稍作修改。每层长出一组
每层最后一个符号是小于号(<),其余都是等号。
所有层的最后一个符号是小于等于(<=)。
如果按排序字段(本例为VV1,VV2,VV3,VV4,VV5)进行了索引,查询速度会大大加快。
排序的命令是sort,格式是:SORT TO 新表名 ON 字段名
补充:
例如下面的命令:
use 学生
sort on 学号 to 学生_排序
产生一个新的 学生_排序.DBF 文件,里面是排序了的。
如果你只是向按照某个标准进行排序查看一下,不生成新的文件,那么可以使用SQL语句,例如:
SELECT * FROM 学生 ORDER BY 总成绩 DESC
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)