sql自定義排序
⑴ sql語句中,選擇結果如何按指定順序排序
可以這樣實現題主所要求的排序
select * from A_TABLE1 where
name in(『張三』,『李四』,『王五』)
order by (case name when '張三' then 1
when '李四' then 2 else 3 end);
⑵ 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 server 2008中怎麼自定義列排序呢
查詢時輸入
selectuser,sex,agefromuser
就行,完全無影響的
⑷ 用SQL語句怎樣排序
這個可以根據地區編碼降序排列
代碼如下:
select * from 表名
order by 地區編碼 desc
中文屬性列名不記得要不要加上引號 你試下看看
⑸ 易語言SQL查詢自定義排序
withtas(
select'1'工號,'銷售'職位,'張三'姓名fromalunionall
select'2'工號,'倉管'職位,'李四'姓名fromalunionall
select'3'工號,'人事'職位,'王五'姓名fromalunionall
select'4'工號,'人事'職位,'趙六'姓名fromalunionall
select'5'工號,'銷售'職位,'馬奇'姓名fromal
)
select*fromtorderbydecode(職位,'銷售',1,'人事',2,3),工號;
如上答案純手工碼字沒有參與審核測試!@
⑹ sql 添加自定義排序
sql 添加自定義排序
Mysql :
SELECT (@i:=@i+1) AS ind ,欄位 FROM 表名 別名, (SELECT @i:=0) t WHERE `IsDeleted` = 0;
Oracle:
本就有rownum。可直接用:SELECT rownum,欄位 FROM 表名;
SqlServer:
SELECTROW_NUMBER()OVER(ORDERBYID) ROWNU,欄位FROM表名;
給表中所有數據重新排序
SELECT(SELECTCOUNT(`Id`)FROM表名 別名1WHERE別名1.`IsDeleted`=0AND別名1.`Id`<=別名2.`Id`)ASseq ,別名2.*FROM表名別名2WHERE別名2.`IsDeleted`=0AND別名2.`WLTId`=3;
⑺ sql 綜合查詢後自定義排序
sum(pkq)和Sum(pusermoney2)最好指定別名,不知道你的「很多」是指什麼?一個欄位?
按下面的改一下試試吧 order by 後面的排序欄位名自己加上
Select * from
(
select replace(pworktype,'-幹部','幹部') as pwork1,sum(pkq) ,很多, Sum(pusermoney2)
from money_main where sid='第八項目部2015年6月職工工資支付明細表' and pht='返聘' and pworktype not like '%幹部%'
group by pht
UNION
select pwork1,sum(pkq),很多, Sum(pusermoney2)
from money_main where sid='第八項目部2015年6月職工工資支付明細表' and pht<>'外來工' and pht<>'返聘' and pworktype not like '%幹部%'
group by pwork1
) as a order by ........
⑻ sql order by 怎麼自定義排序
排序有升序和降序之分,ASC表示升序排序,DESC表示降序排序。如果不指明排序順序,默認的排序順序為升序ASC。如果要降序,必須書寫DESC關鍵字
比如一個ZZZ表裡的XXX列需要降序,語句如下
select * from ZZZ order by XXX desc
⑼ sql的order by可以自定義排序函數嗎
可以的。order by 後面跟著的欄位名,而且現在的瓶頸基本是在sql上,所以盡量不要在sql里執行計算函數之類。因為運算和執行函數會消耗資源,使得sql執行變慢。函數之類的能在程序里執行盡量在程序里執行,現在cpu的瓶頸還很遠。
⑽ sql 按欄位指定值排序
sql語句的排序,有止是 asc,desc 簡單的正序、倒序排列,還可以根據需要欄位的值,來執行排序。可使用如下方式:
1.點擊新建查詢:
2.輸入如下語句:
orderby
case`A1`
when a2then1//當值為a2,排在第一個
whena3 then2//當值為a3,排在第二個
whena1 then3//當值為a1,排在第三個
end
asc//按上面順序,正序排列(也可為desc)
ORDER BY 語句用於根據指定的列對結果集進行排序。
ORDER BY 語句默認按照升序對記錄進行排序。
如果希望按照降序對記錄進行排序,可以使用 DESC 關鍵字。
拓展資料:
sql常見語句
更新:update table1 set field1=value1 where 范圍
查找:select * from table1 where field1 like 』%value1%』 (所有包含『value1』這個模式的字元串)
排序:select * from table1 order by field1,field2 [desc]
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1[separator]