sql查询结果排序
1. 如何对sql检索出的数据进行多列排序
SQL多列排序可以在ORDER BY 子句里列出多个列进行排序,列与列之间用逗号隔离,标注关键字ASC为升序排序、DESC为降序排序,省略升/降排序关键字则默认为升序排序。排序字段列表中越靠前的字段其排序优先级别越高。请注意对SQL语句除了对列实施排序外,还可以对基于列的计算表达式实施排序。
请参考下列SQL多列排序语句:
select * from t1 order by col1,col5 desc,col3;
此例以col1第一优先升序排序,col5第二优先降序排序,col3第三优先升序排序。
2. SQL查询按指定字段排序
不知道你什么数据库,
假如是
Oracle:
select
count(city_name),
city_name
from
tuan_info
where
source_type
=
1
and
city_name
in("北京","上海","广州")
group
by
city_name
ORDER
BY
INSTR('北京,上海,广州',
city_name);
如果是
SQL
Server
用
ORDER
BY
CHARINDEX(city_name,
'北京,上海,广州')
3. 在sql 语言中,对输出结果排序的是( ) A.order by B.where C.group by D.having
在sql语言中,对输出结果排序的是order by。
SQL语言中,ORDER BY 语句用于对结果集进行排序。ASC:升序(默认),DESC:降序。ORDER BY 语句默认按照升序对记录进行排序。如果希望按照降序对记录进行排序,可以使用 DESC 关键字。ORDER BY 子句为Previous PageNext Page。
(3)sql查询结果排序扩展阅读:
ORDER BY 多列的时候,先按照第一个column name排序,再按照第二个column name排序。使用desc或者asc排序符时,只对它紧跟着的第一个列名有效,其他不受影响,仍然是默认的升序。
在Order by 时认为null是最大值,如果Order by 中指定了表达式Nulls first则表示null值的记录将排在最前(不管是asc 还是 desc),如果Order by 中指定了表达式Nulls last则表示null值的记录将排在最后 (不管是asc 还是 desc)。
4. sql 升序降序排列
降序:SELECT * FROM kc ORDERBYcpbh DESC
升序:SELECT * FROM kc ORDERBYcpbhASC
语法:
sql可以根据字段进行排序,其中,DESC表示降序,ASC表示升序
order by 字段名 DESC;按照字段名降序排序
order by 字段名 ASC;按照字段名升序排序
实例:
一、/*查询学生表中姓名、学号,并以学号降序排序*/
select name,StuID from Students_information order by StuID desc /**order by 以什么排序,默认为升序,desc是降序*/
二、/*查询学生表中前5名学生的姓名,学号,并以学号升序排列*/
select top 5 name,StuID from Students_information order by StuID /*order by 默认为升序*/
(4)sql查询结果排序扩展阅读:
一、ORDER BY 语句
ORDER BY 语句用于根据指定的列对结果集进行排序。
ORDER BY 语句默认按照升序对记录进行排序。
如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。
二、SQL 排序多个字段
order by 多个字段,每个字段后面都有排序方式,默认ASC
例如:select table a order by a.time1 ,a.time2 desc,a.time3 asc
5. PL SQL 查询结果为空的怎么排序到最后面
1、只有一个查询结果的查询:
select min(to_char(b.arrive_date,'yyyymmdd')||lpad(b.arrive_time,6,0)||c.xs_mc)
into vtmpstr
from tb_evt_bag_mail_rela a, tb_evt_route_bag_rela b, tb_jgjm c
where a.mail_num = vmail_num
。。。。。。
对这个查询,只需判断变量vtmpstr是否为空就可以了,即:
if vtmpstr is null then
注意:查询中用聚合函数才可以这样用,如果直接取一个值,又没有结果,则会出错跳出模块,跑到例外处理那儿去了,如下面语句:
select city_name into vcity_jdj
from tb_county
where xs_code=substr(vrcv_area,1,4);
如果没有查询结果,或者多个查询结果,都会出错跑到例外处理那儿,所以应该写成下面格式:
select min(city_name) into vcity_jdj
from tb_county
where xs_code=substr(vrcv_area,1,4);
2、游标的查询结果:
open cur_get_trans(vin_date,vmail_num);
loop
fetch cur_get_trans
into vdeal_date,vdeal_time,vdeal_org_code,vlabel_strip,
vmway_code,vflight_name,vdepart_date,vdepart_time;
--判断查询结果
if cur_get_trans%found then
。。。
else
。。。
end if;
或者退出循环处理,即:
open cur_get_trans(vin_date,vmail_num);
loop
fetch cur_get_trans
into vdeal_date,vdeal_time,vdeal_org_code,vlabel_strip,
vmway_code,vflight_name,vdepart_date,vdepart_time;
exit when cur_get_mail%notfound;
--处理有结果的查询
end loop;
--处理无结果的查询
--注意,有查询结果处理完毕也会执行到此处,所以要区分上面是否进行过有结果的处理。
close cur_get_trans;
===================================================================
附:
1、游标相关的4个语句:
declare(声明)、open(打开)、fetch(取数)、close(关闭)。
2、游标相关的4个属性:%isopen, %found, %notfound,和 %rowcount
(1)%isopen:布尔型,用于检测游标是否已经打开。如果游标已经打开,返回true,否则返回false。
(2)%found:布尔型,判断最近一次执行fetch语句后,是否从缓冲区中提取到数据,返回true,否则返回false。
(3)%notfound:与%found相反。
(4)%rowcount:数值型,返回到目前为止已经从游标缓冲区提取数据的行数。在fetch语句没有执行之前,该属性值为0。
使用隐式游标%found属性,sql%found;
使用显示游标%found属性,cur_get_trans%found。
6. sql 语句排序 在查询结果中按人数降序排列,若人数相同,则按课程号升序排列
代码如下:
select xuehao as 学号,score as 总成绩
from CJBwhere xuehao in(
select xuehao from XSB)
group by xuehao,score
order by score desc,xuehao
select id as 学号, sum(score) as 总成绩
from 成绩表
group by id
order by sum(score) desc, id asc
(6)sql查询结果排序扩展阅读
ORDER BY 语句用于对结果集进行排序。
ORDER BY 语句用于根据指定的列对结果集进行排序。
ORDER BY 语句默认按照升序对记录进行排序。
如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。
order by 是用在where条件之后,用来对查询结果进行排序。
order by 字段名 asc/desc 。
asc 表示升序(默认为asc,可以省略)。
desc表示降序。
order by 无法用于子查询,否则会报错:除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。
7. SQL查询并排序问题
select * from 表 where 字段 in (x1,x2,x3,x4.....) order by 字段 ASC/DESC
此中排序字段是索引条件中字段,ASC为升序,DESC为降序,此中的排列会以X1,X2,X3排序,但X1可能有很多数据,如果在X1内部排序,请加上第二排序。
select * from 表 where 字段 in (x1,x2,x3,x4.....) order by 字段 ASC/DESC,字段2 ASC/DESC
此表达式是在X1,X2等排序的基础上再按字段2进行排序!
我就不明白,如何是多数据,X1,X2等又包含多个条记录,你就不想用Group呢?
你想看一下group by 的使用方法,对时可以对分组条件进行限定,关键词是having,使用方法类where,但与where是有区别的!
8. sql中排序要怎么写
1.语法:
SELECT "栏位名"
FROM "表格名"
[WHERE "条件"]
ORDER BY "栏位名" [ASC, DESC];
2.注意事项:先分组再排序,运用的是ORDER BY,后面加的是你要按什么排序,如果按照升序可以不用写或者加上ASC;如果是降序,要加上DESC。
3.例子:SELECT id FROM user ORDER BY id;
9. 关于SQL SERVER查询之后排序问题!
用order
by,给你个例子
你看看
就明白了:
SELECT
au_lname
FROM
authors
ORDER
BY
au_lname
当这个SELECT语句执行时,作者名字的显示将按字母顺序排列。ORDER
BY子句将作者名字按升序排列。
你也可以同时对多个列使用ORDER
BY子句。例如,如果你想同时按升序显示字段au_lname和字段au_fname,你需要对两个字段都进行排序:
SELECT
au_lname,au_fname
FROM
authors
ORDER
BY
au_lname
,au_fname
这个查询首先把结果按au_lname字段进行排序,然后按字段au_fname排序。记录将按如下的顺序取出:
au_lname
au_fname
…………………………………………………………………….
Bennet
Abraham
Ringer
Albert
Ringer
Anne
Smith
Meander
…
(23
row(s)
affected)
注意有两个作者有相同的名字Ringer。名为Albert
Ringer的作者出现名为Anne
Ringer的作者之前,这是因为姓Albert按字母顺序应排在姓Anne之前。
如果你想把查询结果按相反的顺序排列,你可以使用关键字DESC。关键字DESC把查询结果按降序排列,如下例所示:
SELECT
au_lname,au_fname
FROM
authors
WHERE
au_lname=”Ringer”
ORDER
BY
au_lname
,au_fname
DESC
这个查询从表authors中取出所有名字为Ringer的作者记录。ORDER
BY子句根据作者的名字和姓,将查询结果按降序排列。结果是这样的:
au_lname
au_fname
……………………………………………………………………………………….
Ringer
Anne
Ringer
Albert
(2
row(s)
affectec)
注意在这个表中,姓Anne出现在姓Albert之前。作者名字按降序显示。
你也可以按数值型字段对一个查询结果进行排序。例如,如果你想按降序取出所有书的价格,你可以使用如下的SQL查询:
SELECT
price
FROM
titles
ORDER
BY
price
DESC
这个SELECT语句从表中取出所有书的价格,显示结果时,价格低的书先显示,价格高的书后显示。
10. sql中的排序,如何使用倒序
sql中排序倒序使用desc关键字,一般需要和order by 合用,示例sql语句如下:
例如:select * from student order by age desc;
意思是查询学生表,以学生年纪倒序排列。
排序采用 order by 子句,order by 后面跟上排序字段,排序字段可以放多个,多个采用逗号间隔,order by默认采用升序(asc),如果存在 where 子句,那么 order by 必须放到where 语句后面。
例如:select ename,job,ename from emp order by job desc,sal desc;
意思是查询员工表按照 job 和薪水倒序排序 。
(10)sql查询结果排序扩展阅读
sql中升序(正序)用法介绍:
1、使用asc关键字
例如:select ename,sal from emp order by sal asc;
手动指定按照薪水由小到大排序(升序关键字 asc)
2、不加asc关键字,系统默认升序
例如:select ename,job,sal from emp where job = ”MANAGER”order by sal;
取得job 为 MANAGER 的员工,按照薪水由小到大排序(系统默
认由小到大)