A. sql字元型欄位按數字型欄位排序實現方法
這是很久之前的就遇到的問題了,去年寫了個WP插件:WordPress投票插件Ludou
Simple
Vote,由於有些使用者需要一個投票排行榜,所以需要用一條SQL來讀取按得分排序的文章列表。
Ludou
Simple
Vote的投票得分結果是以自定義欄目的方式存儲在WordPress的postmeta中,分值存放在meta_value欄位,而meta_value欄位類型是longtext,如果直接使用下面的SQL查詢語句來排序:
復制代碼
代碼如下:
ORDER
BY
`meta_value`
那麼按得分排序得到的結果可能是:
1
10
11
123
1234
2
25
253
3
由於是按字母順序排列,所以123排在了2的前面,顯然不符合我們的要求,那麼怎樣才能按照我們預想的數字順序排序呢?下面介紹兩種方法。
一、採用MySQL的cast函數,轉換欄位格式
這里我們將meta_value欄位轉換成數值類型的欄位DECIMAL,然後再進行排序:
復制代碼
代碼如下:
ORDER
BY
CAST(`meta_value`
AS
DECIMAL)
需要注意的是,你所要排序的meta_value欄位的值必須都是可轉換成數字,否則將會出錯。
二、使用MySQL絕對值函數ABS
使用MySQL絕對值函數ABS,它告訴MySQL使用絕對值來處理處理這個欄位:
復制代碼
代碼如下:ORDER
BY
ABS(`meta_value`)
B. SQL如何寫個函數將字元串按單字元進行排序
看到你這個需求,我的第一反應就是函數要遞歸,如果你這個字元串長度很長,再遞歸的時候資料庫就呵呵了, 在這里很想問一句,資料庫主要職責還是存儲數據,你這個字元串排序完全可以在後台程序中處理幹嘛非要使用資料庫函數呢? 這就一點類似加密解密了,這些全都應該是後台程序完成的呀.
C. SQL如何最快實現排序
你好,很高興回答你的問題。
具體提供一下表結構以及索引和要執行的sql語句。
D. 用SQL語句怎樣排序
這個可以根據地區編碼降序排列
代碼如下:
select * from 表名
order by 地區編碼 desc
中文屬性列名不記得要不要加上引號 你試下看看
E. 請教:能否在SQL語句里自定義排序
對數據行進行各種形式的排序是SQL語言的強項,我們完全可以根據不同的需求使用「ORDER BY」子句進行自定義排序的。
具體的排序定義由參與排序的欄位或基於欄位值的計算表達式(通常是使用各種函數)或特意添加的排序用行"常量"標記、各個排序欄位的先後順序以及是ASC(升序)還是DESC(降序)所確定。對於特別復雜的排序需求我們還可以借用存儲過程、游標等手段以實現常規排序難於實現的排序需求。
F. 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 和薪水倒序排序 。
(6)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 的員工,按照薪水由小到大排序(系統默
認由小到大)
G. sql怎麼根據欄位長度和大小排序
可以參考下面的代碼:
select * from 表 order by len(欄位);長度,由短到長
select * from 表 order by len(欄位)desc;長度,由長到短
select * from 表 order by 欄位;大小,由小到大
select * from 表 order by 欄位 desc;大小,由大到小
(7)sql函數實現排序擴展閱讀:
sql參考語句
更新:update table1 set field1=value1 where 范圍
排序:select * from table1 order by field1,field2 [desc]
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
H. 如何用SQL進行排序
您到底是什麼意思?是要生成序號?
是不是這樣:
SELECT BMMC,序號=
replace(
replace(
replace(
replace(
REPLACE(BMMC,'部門',''),
'a','00'),'b','01'),'c','02')
這是生成部門編號,與部門名稱中的字母順序一致。
如果字母只是ABC這幾個,這樣就可以了,不需要存儲過程。
I. 如何寫sql代碼進行排序
select *
from (
select *,(case when delete_type='NONE' then 0 else 1 end) as flag
from table_name
) t
order by flag asc, pv asc
--order by flag desc,PV desc
J. sql的函數,排序和分組的sql語句,最簡單的就OK,還有子查詢
排序:select * from A order by id (默認升序 如果是降序的話就是 order by id desc)
分組:select id from A group by id
(子查詢是一個 SELECT 語句,它嵌套在一個 SELECT、SELECT...INTO 語句、INSERT...INTO 語句、DELETE 語句、或 UPDATE 語句或嵌套在另一子查詢中。)
簡單的如:select id from A where id in(select id from B )
都是很簡單的例子