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 的員工,按照薪水由小到大排序(系統默
認由小到大)