A. mysql 如何中文英文混合排序
排序目標是,英文就按首字母的 a,b,c 排,中文則按漢字的首字母排。
最簡單的排序方法只需要一條 SQL 語句就可以完成:
01 mysql> select tag, COUNT(tag) from news GROUP BY tag order byconvert(tag using gbk) collate gbk_chinese_ci;
02 +-----------------+-----------------+
03 | tag | COUNT(tag) |
04 +-----------------+-----------------+
05 | .Net | 3 |
06 | 10000小時 | 1 |
07 | Amazon | 9 |
08 | android | 57 |
09 | C語言 | 1 |
10 | Dennis Ritchie | 2 |
11 | Go語言 | 5 |
12 | IT見解 | 146 |
13 | JavaScript | 4 |
14 | John McCarthy | 1 |
15 | JQuery | 7 |
16 | Zynga | 1 |
17 | 阿里巴巴 | 28 |
18 | 貝爾實驗室 | 1 |
19 | 互聯網 | 24 |
20 | 簡明現代魔法 | 1 |
21 | 淘寶網 | 2 |
22 | 信息圖 | 1 |
23 | 余額寶 | 11 |
24 | 支付寶 | 14 |
25 | 植物大戰僵屍 | 4 |
26 | 自媒體 | 3 |
27 +-----------------+-----------------+
上面是按 gbk 字元集排序的,那麼如果按 utf8 又如何呢?
view sourceprint?
01 mysql> select tag, COUNT(tag) from news GROUP BY tag order byconvert(tag using utf8) collate utf8_unicode_ci;
02 +-----------------+-----------------+
03 | tag | COUNT(tag) |
04 +-----------------+-----------------+
05 | .Net | 3 |
06 | 10000小時 | 1 |
07 | 12306 | 1 |
08 | C語言 | 1 |
09 | IT見解 | 146 |
10 | Quora | 4 |
11 | Twitch | 1 |
12 | Twitter | 19 |
13 | Zynga | 1 |
14 | 三星 | 3 |
15 | 專利 | 1 |
16 | 余額寶 | 11 |
17 | 開曼群島 | 1 |
18 | 意志力 | 1 |
19 | 植物大戰僵屍 | 4 |
20 | 注意力經濟 | 1 |
21 | 簡明現代魔法 | 1 |
22 | 諾基亞 | 12 |
23 | 諾貝爾獎 | 1 |
24 | 豆瓣 | 3 |
25 | 貝佐斯 | 1 |
26 | 貝爾實驗室 | 1 |
27 | 輕博客 | 3 |
28 | 運營 | 1 |
29 | 量子計算機 | 1 |
30 | 黑莓 | 1 |
31 +-----------------+-----------------+
PS:ci是 case insensitive, 即 「大小寫不敏感」, a 和 A 會在字元判斷中會被當做一樣的。
數字和引文排序是沒問題,但為什麼 H黑莓 會比 L量子計算機 靠後呢?這個在後面的章節會慢慢道來。
B. mysql資料庫中數據的排名問題
這個如果想要性能的話,就用下面的sql語句實現:
select orderNo from (select (@rowNum:=@rowNum+1) orderNo , userid ,pid from TABLE,(Select (@rowNum :=0) ) b )t where t.userid=2694
然後php獲得這條結果數組,取第一個元素即是排序
如果對這個sql語句有疑問,不明白,可以使用一個比較耗費性能的方法:
select userid from record
執行這條語句,獲得一個數組$res
遍歷前設置一個記錄排序的標識 $seq=1;
for(...){
$userid=$res['userid'];//把第seq 個位置的學號拿出來,跟想要的學號比
if($userid==2694){
break;
}
$seq++;
}
//如果 這個排序標識比結果集數組大小還大,說明沒這個userid的記錄。
$seq就是排序
我沒有測試 你可以自己試一下
C. mysql資料庫怎麼可以兩個條件排序
可以的,order by多個欄位規則是這樣的,用逗號分隔每一個欄位,如果欄位不指明排序方式,默認是增序。排序的方法是先按第一個欄位排序,如果有相同的再按後續的欄位依次排序。
舉個例子
D. mysql資料庫,排序的語句
具體如下:
1、第一步,創建一個測試表,代碼如下,見下圖,轉到下面的步驟。
E. 如何根據MYSQL資料庫中的某一個欄位進行排序呢
先把分類全取出來..並隨機排序..
取排在第一個分類
例如是
西裝
然後查詢的時候
order
by
(category='西裝')
desc,category
即可實現要求.
select
*
from
(select
*
from
tablename
where
A='01'
order
by
B
asc)
a
union
all
select
*
from
(select
*
from
tablename
where
A='02'
order
by
B
desc)
a
F. MySQL資料庫數據怎麼實現排序輸出
MySQL中排序輸出需要用order by。
如圖,test表中有如下數據:
G. java如何實現mysql資料庫有中文欄位中文排序
如果欄位是gbk字元集的直接order by
如果是UTF-8字元集,查詢的時候,通過convert函數,把查詢出來的數據使用的字元集gb2312編碼就可以了,然後使用convert之後的中文排序。
如:select name from test1 order by convert(name using gb2312) asc;
H. mysql怎麼讀
mysql讀音:英[maɪ es kju: el]、美[maɪ ɛs kju ɛl]。
MySQL是一個關系型資料庫管理系統,由瑞典MySQL AB公司開發,屬於Oracle旗下產品。MySQL 是最流行的關系型資料庫管理系統之一,在WEB應用方面,MySQL是最好的RDBMS(Relational Database Management System,關系資料庫管理系統) 應用軟體之一。
使用注意事項:
在 MySQL 資料庫中,進行中文排序和查找的時候,對漢字的排序和查找結果是錯誤的。這種情況在 MySQL 的很多版本中都存在。如果這個問題不解決,那麼 MySQL 將無法實際處理中文。
出現這個問題的原因是:MySQL 在查詢字元串時是大小寫不敏感的,在編繹 MySQL 時一般以 ISO-8859 字元集作為默認的字元集,因此在比較過程中中文編碼字元大小寫轉換造成了這種現象,一種解決方法是對於包含中文的欄位加上 "binary" 屬性,使之作為二進制比較,例如將 "name char(10)" 改成 "name char(10)binary"。