㈠ Mysql的幾種排序方式
1、單列排序
SELECT * FROM test1 ORDER BY date_time
默認升序,降序後面接"DESC"即可。
2、多列排序
SELECT * FROM test1 ORDER BY `status`, date_time DESC
首先按`status`欄位排序,若`status`相等,則按data_time排序。
3、自定義排序
SELECT * FROM test1 ORDER BY FIELD(`status`, 3, 2, 4, 1, 5), date_time DESC
使用"FIELD()"函數,可指定順序。
4、其他條件排序
先按大於等於當前時間升序,再按小於當前時間降序,支持分頁。
SELECT * FROM test1 ORDER BY date_time < NOW(), IF(date_time < NOW(), 0, date_time), date_time DESC
附加SQL腳本:
CREATETABLE`test1`(
`id`bigint(20)NOTNULLAUTO_INCREMENT,
`name`varchar(50)NOTNULL,
`date_time`datetimeNOTNULL,
`status`int(5)NOTNULL,
PRIMARYKEY(`id`)
)ENGINE=InnoDBAUTO_INCREMENT=1DEFAULTCHARSET=utf8
INSERTINTO`test1`VALUES
(NULL,'測試1','2018-03-0511:09:00',1),(NULL,'測試2','2018-03-0611:09:00',1),(NULL,'abc','2018-03-0711:09:00',1),
(NULL,'def','2018-04-0811:09:00',2),(NULL,'李某某','2018-04-1711:09:00',1),(NULL,'飯某某','2018-04-2013:09:00',2),
(NULL,'趙','2018-04-2001:09:00',4),(NULL,'倩','2018-04-2811:09:00',2),(NULL,'andy','2018-04-3011:09:00',1),
(NULL,'tony','2018-05-0811:09:00',4),(NULL,'tom','2018-05-0711:09:00',3),(NULL,'bill','2018-05-1811:09:00',3),
(NULL,'james','2018-06-0711:09:00',4),(NULL,'anthony','2018-06-1811:09:00',2),(NULL,'蓋茨','2018-04-2111:09:00',1),
(NULL,'部長','2018-04-2411:09:00',4),(NULL,'李總','2018-04-2011:09:00',5),(NULL,'張總','2018-04-2911:09:00',2),
(NULL,'王總','2018-04-1911:09:00',3),(NULL,'唐總','2018-05-0111:09:00',2);
參考的這篇文檔Mysql排序方式
㈡ sql怎樣排序
1-1,1-2這種都是以字元形式存放的,建議單獨做出來一個列,用來排序,用整型的,
㈢ 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 和薪水倒序排序 。
(3)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 的員工,按照薪水由小到大排序(系統默
認由小到大)
㈣ SQL查詢語句默認排序規律
select
a.*,b.*
(可以選擇欄位名稱,注意兩個表中重名的欄位一定要加a.或b.,其他不重名的可以不加,但是為了以後的拓展,最好都加)
from
[表A]
as
a
left
join
[表B]
as
b
on
a.$key=b.key
order
by
b.cid
desc
(這樣的話當b表中的b.key不在a表中的時候,b.*的欄位都是空的,如果想改成你期望的類型,可以使用isnull函數,比如isnull(b.key,0)或
isnull(b.key,'無').
㈤ 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 默認為升序*/
(5)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
㈥ sql里樹形結構分組排序
createtableT1(thisvarchar(10),parentvarchar(10))
insertintoT1(this,parent)
values('id1',null)
,('id2',null)
,('id3','id1')
,('id4','id2')
,('id5','id3')
,('id6','id3')
,('id7','id4')
,('id8','id7')
--sqlserver的cte功能
withtree(this,parent,root,depth)as(
selectthis,parent,thisasroot,
unionall
selecta.this,a.parent,b.root,b.depth+1asdepthfromT1a,treebwherea.parent=b.this
)
selectthis,parent,root,depth
fromtree
orderbyroot,depth,this
㈦ SQL語句中如何判斷條件實現不同的排序方式
第一步:確定輸出內容,你要的欄位為name,數據結果為b,d,a,c
;
第二步:找規律,b、d的online為1;a、c的位說明是按online
降序;然後來看下
b
、d的online相同,viewnum為30和10,那麼就是viewnum降序;如果a、c的viewnum也是降序那麼規律就找到了,發現
a為40、c為20,確實是降序,滿足條件。
第三步:總結規律就是先按online降序排序,之後再按viewnum降序排序。
第四步:得出需要的sql。
select
name
from
tablename
order
by
online
desc,
viewnum
desc
;
㈧ sql中排序要怎麼寫
1.語法:
SELECT "欄位名"
FROM "表格名"
[WHERE "條件"]
ORDER BY "欄位名" [ASC, DESC];
2.注意事項:先分組再排序,運用的是ORDER BY,後面加的是你要按什麼排序,如果按照升序可以不用寫或者加上ASC;如果是降序,要加上DESC。
3.例子:SELECT id FROM user ORDER BY id;
㈨ SQL排序問題
sql排序的規則是,按照第一個欄位的順序正序或倒序排列,
當第一個欄位是相同的,那麼會按照第二個欄位的正序或倒序排列
依次類推,如果後面沒有排序欄位,會隨機排列
所以,按照第一個欄位倒序,按照第二個欄位正序排列,結果視覺顯示全部到序,原因可能是
第一個欄位並無相同的,且第一個欄位和第二個排序欄位數值的增減是成反比的。