❶ 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`)
❷ SQL如何按兩個欄位排序,一個按倒序一個按升序
1、首先雙擊一個表,如下圖所示。
❸ sql按兩欄位排序
這個需要在排序語句中使用條件判斷
例如:表【table_temp】中列【col1】為字元,屬性為varchar(10),排序時需要按照b、a、c的順序顯示,則可按照以下sql語句:
select
*
from
table_temp
order by
case
when col1='b' then 1
when col1='a' then 2
when col1='c' then 3
end
❹ 若sql語句中order by指定了多個欄位,則怎麼排序
order by id desc,time desc
先是按 id 降序排列 (優先)
如果 id 欄位 有些是一樣的話 再按time 降序排列 (前提是滿足id降序排列)
order by name, age desc
name優先
name一樣的話,就按age排序。
後面再加第三列的話,也是一樣 以此類推下去。
(4)sql怎樣按照欄位排序擴展閱讀:
mySql order by 幾種排序的寫法
1、單列升序:select<column_name> from <table_name> order by <column_name>; (默認升序,即使不寫ASC)
2、單列降序:select <column_name> from <table_name> order by <column_name> desc;
3、多列升序:select <column_one>, <column_two> from <table_name> order by <column_one>, <column_two>;
4、多列降序:select <column_one>, <column_two> from <table_name> order by <column_one> desc, <column_two> desc;
5、多列混合排序:select <column_one>, <column_two> from <table_name> order by <column_one> desc, <column_two> asc;
❺ SQL語句中,如何按指定欄位排序
對於這種排序的問題處理,如果不是簡單中英文排序,最好價格排序列,sortNum,起到排序的效果,復雜點如每個人有個自己的排序規則,可寫個映射表存儲每個人的排序規則,進行排序
❻ sql語句中對一個欄位排序,欄位中含有字元串和數字,(怎根據數字進行排序)
order by 欄位名稱+0 desc/asc的形式進行排序
order by 欄位名稱*1 desc/asc的形式進行排序
❼ SQL 如何根據兩個欄位排序
1、首先建一張測試表coal_blead,裡面有多個欄位
❽ sql排序方式要根據另一個表的某個欄位排序怎麼實現
可以通過兩個表的關系,然後通過欄位關聯的形式排序。
sql:select
t1.*
from
tablename1
t1,
tablename2
t2
wehere
t1.id=t2.id
order
by
t2.name;
解釋:實際上上面語句會通過
tablename2表的name欄位先排序表tablename2數據,之後會通過id欄位關聯後,讀取出id存在於tablename2表中存在的tablename1表的數據。
備註:上面表中的id欄位的值肯定有相同的,如tablename1和
tablename2
表中id欄位都存在值「1」,才可以有結果輸出。如果兩個表都沒關聯的話,無法實現。
❾ sql按某個欄位值順序排序
升序:select * from 表名 order by 表中的欄位 asc(MySQL中默認是升序排列,可不寫) ;
降序:select * from 表名 order by 表中的欄位 desc ;
❿ sql怎麼根據欄位長度和大小排序
可以參考下面的代碼:
select * from 表 order by len(欄位);長度,由短到長
select * from 表 order by len(欄位)desc;長度,由長到短
select * from 表 order by 欄位;大小,由小到大
select * from 表 order by 欄位 desc;大小,由大到小
(10)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