数据库排序语句

数据库排序语句,第1张

数据库的排序用order by语句实现。

工具:sqlserver 2008R2

步骤:

1、有如下学生表:

2、现要求按学号正序(由小到大)的顺序进行输出,语句如下:

select  from 学生 order by 学号

查询结果:

3、再要求按学号正序(由大到小)的顺序进行输出,语句如下:

select  from 学生 order by 学号 desc

结果:

select

分组列1,分组列2,

聚合列1,聚合列2

from

group

by

分组列1,分组列2

order

by

分组列或聚合列

--------

分组查询中,做为查询结果显示的列,必须是用于分组的列,或者聚合的列

比如:sum(),count(),avg()等等

有个偷懒的方法

假设每个分割的数字不超过4位数

写个函数在通过分割获得数字,然后将所有的数字均补齐为4位,前面加'0'

再排序就正常了

------------------------------------

是我做的一个测试表的结果,第一个字段是测试数据

涉及的函数如下:

CREATE OR REPLACE FUNCTION GETNUM(str IN VARCHAR2)

RETURN NUMBER

IS

num NUMBER :=0;

p   NUMBER;

i   NUMBER :=2;

BEGIN

p := NVL(length(regexp_replace(str,'[^]','')),0);

WHILE p>1 and i<=p loop

BEGIN

num := num + TO_NUMBER(substr(str,instr(str,'',1,i-1)+1,instr(str,'',1,i)-instr(str,'',1,i-1)-1))GETBL(i);

i := i+1;

END;

END LOOP;

IF p = 0 THEN

num := TO_NUMBER(str);

ELSE IF p=1 THEN

num := TO_NUMBER(substr(str,1,instr(str,'',1,1)))+TO_NUMBER(substr(str,instr(str,'',1,1)+1));

ELSE

num := num+TO_NUMBER(substr(str,1,instr(str,'',1,1)))+TO_NUMBER(substr(str,instr(str,'',1,p)+1))GETBL(p+1);

END IF;

END IF;

RETURN num;

END;

-------

CREATE OR REPLACE FUNCTION GETBL(p IN NUMBER)

RETURN NUMBER

IS

num NUMBER := 1;

i NUMBER := 1 ;

BEGIN

WHILE i < p LOOP

BEGIN

num := num0001;

i := i+1;

END;

END LOOP;

RETURN num;

END;

SELECT 分类表cname AS 分类名称, Count(商品表cls) AS 商品数量

FROM 分类表 LEFT JOIN 商品表 ON 分类表cname = 商品表cls

GROUP BY 分类表cname

ORDER BY Count(商品表cls) DESC;

用的什么数据库啊?

建议你,

把带首字钱有空格的先替换成没有空格的,感觉你的实际业务也是不带空格的格式,

修改方式为

update

a

set

a1=trimleft(a1);

你可以查询一下你对应数据库trimleft的写法

另外一种方式排序时需要指明排序方式

select

from

a

order

by

trimleft(a1);

但是这部是最优解决方案。因为是基于降低查询效率来实现的,

每行数据

都在查询的过程中产于了trimleft的运算。

以上就是关于数据库排序语句全部的内容,包括:数据库排序语句、我想在数据库中的一个表中查询出全部数据 并且按照一个分组和排序、oracle 数据库查询排序问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9655855.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存