最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL 查詢的排序、分頁相關

 更新時間:2020年11月13日 10:59:35   作者:翁智華  
這篇文章主要介紹了MySQL 查詢的排序、分頁相關的相關知識,幫助大家更好的理解和使用數(shù)據(jù)庫,感興趣的朋友可以了解下

概述

數(shù)據(jù)庫中的數(shù)據(jù)直接呈現(xiàn)出來一般不是我們想要的,所以我們上兩節(jié)演示了如何對數(shù)據(jù)進行過濾的方法。除了對數(shù)據(jù)進行過濾,

我們可能還需要對數(shù)據(jù)進行排序,比如想從列表中了解消費最高的項,就可能需要對金額字段做降序排序,想看年齡從小到大的分布情況,就可能需要對user表的age字段進行升序排序。

也可能需要對數(shù)據(jù)進行限制,比如我們需要對付款的1~10,11~20,21~30 名的用戶分別贈予不同的禮品,這時候對數(shù)據(jù)的限制就很有用了。

備注:下面腳本中[]包含的表示可選,| 分隔符表示可選其一。

數(shù)據(jù)排序 order by

語法格式如下:

1、需要排序的字段跟在order by之后;

2、asc 和 desc表示排序的規(guī)則,asc:升序,desc:降序,默認為升序 asc;

3、排序可以指定多次字段,多字段排序之間用逗號隔開。

4、多字段排序中,越靠前優(yōu)先級越高,下面中cname1優(yōu)先排序,當cname1等值的時候,cname2開始排序,直至所有字段都排序完。

select cname from tname order by cname1 [asc|desc],cname2 [asc|desc]...;

單個字段排序

舉個例子,在銷售額中通按照交易的訂單進行金額額度降序的方式顯示:

mysql> select * from t_order;
+---------+---------+---------+-------+
| orderid | account | amount | goods |
+---------+---------+---------+-------+
|    8 | brand  | 52.2  |   2 |
|    9 | hen   | 1752.02 |   7 |
|   10 | helyn  | 88.5  |   4 |
|   11 | sol   | 1007.9 |  11 |
|   12 | diny  | 12   |   1 |
|   13 | weng  | 52.2  |   5 |
|   14 | sally  | 99.71  |   9 |
+---------+---------+---------+-------+
7 rows in set

mysql> select * from t_order order by amount desc;
+---------+---------+---------+-------+
| orderid | account | amount | goods |
+---------+---------+---------+-------+
|    9 | hen   | 1752.02 |   7 |
|   11 | sol   | 1007.9 |  11 |
|   14 | sally  | 99.71  |   9 |
|   10 | helyn  | 88.5  |   4 |
|    8 | brand  | 52.2  |   2 |
|   13 | weng  | 52.2  |   5 |
|   12 | diny  | 12   |   1 |
+---------+---------+---------+-------+
7 rows in set

多個字段排序

多個字段排序用逗號隔開,優(yōu)先級從左到右逐次遞減,如下圖,如果金額一致,則按照購買商品數(shù)量從多到少排序:

mysql> select * from t_order order by amount desc,goods desc;
+---------+---------+---------+-------+
| orderid | account | amount | goods |
+---------+---------+---------+-------+
|    9 | hen   | 1752.02 |   7 |
|   11 | sol   | 1007.9 |  11 |
|   14 | sally  | 99.71  |   9 |
|   10 | helyn  | 88.5  |   4 |
|   13 | weng  | 52.2  |   5 |
|    8 | brand  | 52.2  |   2 |
|   12 | diny  | 12   |   1 |
+---------+---------+---------+-------+
7 rows in set

按alias排序

按照別名排序或者做條件查詢的目的都是為了簡化代碼,方便使用,別名可以是英文,也可以是中文:

mysql> select account as ac,amount as am,goods as gd from t_order order by am,gd desc;

+-------+---------+----+
| ac  | am   | gd |
+-------+---------+----+
| diny | 12   | 1 |
| weng | 52.2  | 5 |
| brand | 52.2  | 2 |
| helyn | 88.5  | 4 |
| sally | 99.71  | 9 |
| sol  | 1007.9 | 11 |
| hen  | 1752.02 | 7 |
+-------+---------+----+
7 rows in set

字段排序中使用函數(shù)

下面使用了abs取絕對值函數(shù),所以在 am字段降序排序中,-99.99 排在 99.71之上。

mysql> select * from t_order;
+---------+---------+---------+-------+
| orderid | account | amount | goods |
+---------+---------+---------+-------+
|    8 | brand  | 52.2  |   2 |
|    9 | hen   | 1752.02 |   7 |
|   10 | helyn  | 88.5  |   4 |
|   11 | sol   | 1007.9 |  11 |
|   12 | diny  | 12   |   1 |
|   13 | weng  | 52.2  |   5 |
|   14 | sally  | 99.71  |   9 |
|   15 | brand1 | -99.99 |   5 |
+---------+---------+---------+-------+
8 rows in set

mysql> select account as ac,amount as am,goods as gd from t_order order by abs(am) desc;

+--------+---------+----+
| ac   | am   | gd |
+--------+---------+----+
| hen  | 1752.02 | 7 |
| sol  | 1007.9 | 11 |
| brand1 | -99.99 | 5 |
| sally | 99.71  | 9 |
| helyn | 88.5  | 4 |
| brand | 52.2  | 2 |
| weng  | 52.2  | 5 |
| diny  | 12   | 1 |
+--------+---------+----+
8 rows in set

與Where條件結合使用

order 在 where 條件之后,根據(jù)where已經(jīng)過濾好的數(shù)據(jù)再進行排序。下面是過濾出購買金額>80 且 購買數(shù)量>5的數(shù)據(jù),并且按照價格降序排序。

mysql> select * from t_order;
+---------+---------+---------+-------+
| orderid | account | amount | goods |
+---------+---------+---------+-------+
|    8 | brand  | 52.2  |   2 |
|    9 | hen   | 1752.02 |   7 |
|   10 | helyn  | 88.5  |   4 |
|   11 | sol   | 1007.9 |  11 |
|   12 | diny  | 12   |   1 |
|   13 | weng  | 52.2  |   5 |
|   14 | sally  | 99.71  |   9 |
|   15 | brand1 | -99.99 |   5 |
+---------+---------+---------+-------+
8 rows in set

mysql> select * from t_order where amount>80 and goods>5 order by amount desc;
+---------+---------+---------+-------+
| orderid | account | amount | goods |
+---------+---------+---------+-------+
|    9 | hen   | 1752.02 |   7 |
|   11 | sol   | 1007.9 |  11 |
|   14 | sally  | 99.71  |   9 |
+---------+---------+---------+-------+

數(shù)據(jù)limit

很多時候我們過濾出符合要求的數(shù)據(jù)之后,還需要得到這些數(shù)據(jù)中的某一個具體區(qū)間,比如對付款超過1000的用戶的第1~10,11~20,21~30 名分別贈予不同的禮品,這時候就要使用limit操作了。

limit用來限制select查詢返回的數(shù)據(jù),常用于數(shù)據(jù)排行或者分頁等情況。

語法格式如下:

select cname from tname limit [offset,] count;

1、offset表示偏移量,就是指跳過的行數(shù),可以省略不寫,默認為0,表示跳過0行,如 limit 8 等同于 limit 0,8。

2、count:跳過偏移量offset之后開始取的數(shù)據(jù)行數(shù),有count行。

3、limit中offset和count的值不能用表達式。

獲取前n條記錄

如下圖,limit n 和 limit 0,n 是一致的:

mysql> select * from t_order;
+---------+---------+---------+-------+
| orderid | account | amount | goods |
+---------+---------+---------+-------+
|    8 | brand  | 52.2  |   2 |
|    9 | hen   | 1752.02 |   7 |
|   10 | helyn  | 88.5  |   4 |
|   11 | sol   | 1007.9 |  11 |
|   12 | diny  | 12   |   1 |
|   13 | weng  | 52.2  |   5 |
|   14 | sally  | 99.71  |   9 |
|   15 | brand1 | -99.99 |   5 |
+---------+---------+---------+-------+
8 rows in set

mysql> select * from t_order limit 2
;
+---------+---------+---------+-------+
| orderid | account | amount | goods |
+---------+---------+---------+-------+
|    8 | brand  | 52.2  |   2 |
|    9 | hen   | 1752.02 |   7 |
+---------+---------+---------+-------+
2 rows in set

mysql> select * from t_order limit 0,2;
+---------+---------+---------+-------+
| orderid | account | amount | goods |
+---------+---------+---------+-------+
|    8 | brand  | 52.2  |   2 |
|    9 | hen   | 1752.02 |   7 |
+---------+---------+---------+-------+
2 rows in set

limit限制單條記錄

這邊我們獲取支付金額中最大和最小的的一條記錄。可以先使用 order 條件進行排序,然后limit 第1條記錄即可:

 mysql> select * from t_order;
 +---------+---------+---------+-------+
 | orderid | account | amount | goods |
 +---------+---------+---------+-------+
 |    8 | brand  | 52.2  |   2 |
 |    9 | hen   | 1752.02 |   7 |
 |   10 | helyn  | 88.5  |   4 |
 |   11 | sol   | 1007.9 |  11 |
 |   12 | diny  | 12   |   1 |
 |   13 | weng  | 52.2  |   5 |
 |   14 | sally  | 99.71  |   9 |
 |   15 | brand1 | -99.99 |   5 |
 +---------+---------+---------+-------+
 8 rows in set

 mysql> select * from t_order where amount>0 order by amount desc limit 1;
 +---------+---------+---------+-------+
 | orderid | account | amount | goods |
 +---------+---------+---------+-------+
 |    9 | hen   | 1752.02 |   7 |
 +---------+---------+---------+-------+
 1 row in set

 mysql> select * from t_order where amount>0 order by amount asc limit 1;
 +---------+---------+--------+-------+
 | orderid | account | amount | goods |
 +---------+---------+--------+-------+
 |   12 | diny  | 12   |   1 |
 +---------+---------+--------+-------+
 1 row in set

以上就是MySQL 查詢的排序、分頁相關的詳細內容,更多關于MySQL 查詢的資料請關注腳本之家其它相關文章!

相關文章

  • CentOS 7中源碼安裝MySQL 5.7.6+詳細教程

    CentOS 7中源碼安裝MySQL 5.7.6+詳細教程

    最近在CentOS 7中源碼安裝MySQL 5.7.6+,發(fā)現(xiàn)MySQL5.7.6+以后的安裝方式真的與以前版本的MySQL安裝方式大大的不同呀。不自己安裝一把,你都不知道不同之處在哪,下面這篇文章是通過自己的安裝過程總結的一篇安裝教程,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-12-12
  • MySQL主從同步設置中主服務器二進制日志無法開啟的問題

    MySQL主從同步設置中主服務器二進制日志無法開啟的問題

    這篇文章主要介紹了MySQL主從同步設置中主服務器二進制日志無法開啟的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • MYSQL慢查詢和日志實例講解

    MYSQL慢查詢和日志實例講解

    這篇文章主要介紹了MYSQL慢查詢和日志實例講解,有對這方面感興趣的同學可以研究學習下
    2021-02-02
  • MySQL HandlerSocket插件安裝配置教程

    MySQL HandlerSocket插件安裝配置教程

    這篇文章主要介紹了MySQL HandlerSocket插件安裝配置,包括PHP HandlerSocket插件的安裝配置,需要的朋友可以參考下
    2014-04-04
  • Windows下mysql5.7.10安裝配置方法圖文教程

    Windows下mysql5.7.10安裝配置方法圖文教程

    這篇文章主要為大家詳細介紹了Windows上mysql5.7.10安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • mysql 修改密碼和設置允許遠程登錄

    mysql 修改密碼和設置允許遠程登錄

    這篇文章主要介紹了mysql 修改密碼和設置允許遠程登錄的相關資料,需要的朋友可以參考下
    2015-07-07
  • MySQL8.0 MGR的維護管理

    MySQL8.0 MGR的維護管理

    數(shù)據(jù)庫已成為企業(yè)和管理員們最為關注的核心組件之一,本文主要介紹了MySQL8.0 MGR的維護管理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-08-08
  • MySQL 數(shù)據(jù)類型TINYINT、INT 和 BIGINT的區(qū)別及使用建議

    MySQL 數(shù)據(jù)類型TINYINT、INT 和 BIGINT的區(qū)別及使用建議

    TINYINT 適用于存儲小范圍整數(shù),INT 適用于大多數(shù)常見場景,BIGINT 適用于存儲非常大范圍的整數(shù),本文將詳細介紹這三種整數(shù)類型的區(qū)別、應用場景和使用建議,感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • MySQL的DELETE(刪除數(shù)據(jù))用法解讀

    MySQL的DELETE(刪除數(shù)據(jù))用法解讀

    本文將詳細介紹DELETE語句的基本語法、高級用法、性能優(yōu)化策略以及注意事項,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • MySQL各個特殊時間段的查詢方法

    MySQL各個特殊時間段的查詢方法

    在MySQL數(shù)據(jù)庫中,經(jīng)常需要查詢某個時間段內的數(shù)據(jù),所以本文給大家介紹了MySQL各個特殊時間段的查詢方法,并提供相應的源代碼示例,具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-01-01

最新評論

青川县| 那坡县| 江孜县| 邯郸市| 顺平县| 贵南县| 昆明市| 黄梅县| 福泉市| 民乐县| 高雄县| 元朗区| 峨山| 呼和浩特市| 河北区| 贡觉县| 澄江县| 东阿县| 吴川市| 闸北区| 巴青县| 浪卡子县| 阿克陶县| 江孜县| 正镶白旗| 德庆县| 定南县| 枣强县| 韶关市| 博乐市| 城口县| 嘉峪关市| 芜湖县| 广州市| 大方县| 清河县| 奉化市| 三亚市| 岚皋县| 增城市| 凤山县|