91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL怎么按年/月/周/日/小時分組查詢、排序、limit及判空

發布時間:2023-03-01 16:47:47 來源:億速云 閱讀:170 作者:iii 欄目:MySQL數據庫

今天小編給大家分享一下MySQL怎么按年/月/周/日/小時分組查詢、排序、limit及判空的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

    一、按年/月/周/日/小時分組查詢(日期時間類型為date或者datetime)

    DATE_FORMAT(create_time,'%Y%m%d')中設置需要分組的類型和格式,如下:

    '%Y%m%d'表示:20221122

    '%Y-%m-%d'表示:2022-11-22

    可根據自己的需要設置,年月日都是如此

     如下圖user

    idnameagebirthdaygendercreate_time
    1張三202000-01-012022-11-22 11:11:11
    2李四212001-02-022022-11-19 00:00:00
    3王五231999-05-062022-11-20 23:59:59

    按日分組查詢并排序

    SELECT DATE_FORMAT(create_time,'%Y-%m-%d') days,COUNT(id) 
    FROM user 
    WHERE create_time > "2022-11-11 00:00:00" 
      AND create_time < "2022-12-01 00:00:00" 
    GROUP BY days
    ORDER BY days DESC;

    按周分組查詢 

    SELECT DATE_FORMAT(create_time,'%Y-%u') weeks,COUNT(id) FROM user GROUP BY weeks;

     按月分組查詢

    SELECT DATE_FORMAT(create_time,'%Y-%m') months,COUNT(id) FROM user GROUP BY months

    按年分組查詢

    SELECT DATE_FORMAT(create_time,'%Y') months,COUNT(id) FROM user GROUP BY years

    按小時分組查詢

    SELECT DATE_FORMAT(create_time,'%Y-%m-%d %H') hours,COUNT(id) 
    FROM user 
    WHERE create_time > "2022-11-11 00:00:00" 
      AND create_time < "2022-12-01 00:00:00" 
    GROUP BY hours;

    DATE_FORMAT()需要傳入一個特定的占位符,mysql常用的占位符可參考下表:

    占位符說明
    %Y年(4位)
    %y年(2位)
    %M月(英文名,如January)
    %m月(數字,如01)
    %D日(英文名,如1st)
    %d日(數字,如01)
    %e日(數字,如1)
    %U一年中的第幾周,從0開始 ,周日是第一天
    %u一年中的第幾周,從0開始,周一是第一天
    %H時,24小時制,例如15
    %h時,12小時制,例如01
    %i
    %s

    二、MySQL排序

    1.排序規則

    使用ORDER BY 字句排序,在其后面加所需字段

    • ASC(ascend): 升序

    • DESC(descend): 降序

    ORDER BY 字句在SELECT語句的結尾

    注意:

    數據庫中默認按照先后添加順序存儲數據,在查詢時,也按照添加順序遍歷顯示結果.因此當我們需要一些特定的數據排列時就要使用到排序

    2.單列排序

    根據上述用戶user表查詢:

    #練習1:根據年齡降序(從大到小)排序

    SELECT * FROM user ORDER BY age DESC;

    #練習2:根據出生日期升序(從小到大)排序

    SELECT * FROM user ORDER BY birthday ASC;

    注意:

    如果在ORDER BY 后面沒有顯示指明排序方式的話,則默認按照升序排列排序,有WHERE 和 ORDER BY 同時出現的地方,一定要把WHERE放在FRON語句后面,ORDER BY 往后放

    SELECT *
    FROM user 
    WHERE age > 20 
    ORDER BY age DESC;

    三.limit 詳細用法

    1、用于強制返回指定的記錄行數

    在查詢中,經常要返回前幾條或者中間某幾行數據時,用到limit

    語法如下:

    select * from table_name limit [offset,] rows

    參數說明:

    • offset:指定第一個返回記錄行的偏移量(即從哪一行開始返回),注意:初始行的偏移量為0。

    • rows:返回具體行數。

    總結:如果limit后面是一個參數,就是檢索前多少行。如果limit后面是2個參數,就是從offset+1行開始,檢索rows行記錄。
    舉例:

    select * from table_name limit 10;//檢索前10行記錄
    select * from table_name limit 5 ,10;//從第6行開始,檢索10行記錄,即:檢索記錄行 6-15

    2、分頁

    客戶端通過傳遞page(頁碼),pageSize(每頁顯示的條數)兩個參數去分頁查詢數據庫表中的數據,那我們知道MySql數據庫提供了分頁的函數limit m,n,但是該函數的用法和我們的需求不一樣,所以就需要我們根據實際情況去改寫適合我們自己的分頁語句,具體的分析如下:
    比如:

    • 查詢第1條到第10條的數據的sql是:select * from table limit 0,10; ->對應我們的需求就是查詢第一頁的數據:select * from table limit (1-1)*10,10;

    • 查詢第10條到第20條的數據的sql是:select * from table limit 10,10; ->對應我們的需求就是查詢第二頁的數據:select * from table limit (2-1)*10,10;

    • 查詢第20條到第30條的數據的sql是:select * from table limit 20,10; ->對應我們的需求就是查詢第三頁的數據:select * from table limit (3-1)*10,10;

    總結:

    通過上面的分析,可以得出符合我們需求的分頁sql格式是:

    select * from table limit (page-1)*pageSize,pageSize;

    四.ifnull()函數的使用

    1、ifnull()的語法

    ifnull(a,b)函數解釋:

    • 如果value1不是空,結果返回a

    • 如果value1是空,結果返回b

    2、ifnull()的使用

    如下表:分數表score

    idChineseEnglishPhysics
    19998null
    28899null

    1、 在統計數據時如果沒有值返回,給結果置為0

    舉例:統計物理科目分數總和時,如果該列為null,返回0,如果不使用ifnull(),正常返回值為null

    SELECT ifnull(SUM(Physics),0) FROM score;

    2、在查詢數據需要計算遇到null值時 

    舉例:查詢id為1的學生的語文和物理的總分

    錯誤寫法(在數據庫沒有指定為空時的默認值時)

    SELECT Chinese+Physics FROM score;

    數據為null不能參與運算,否則會直接報錯。

    正確寫法

    SELECT ifnull(Chinese,0)+ifnull(Physics,0) FROM score;

    還有就是使用SUM()等函數,可以忽略計算中的空值。

    SELECT SUM(Chinese,Physics) FROM score。

    以上就是“MySQL怎么按年/月/周/日/小時分組查詢、排序、limit及判空”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    贵港市| 西盟| 新兴县| 格尔木市| 天气| 德安县| 象山县| 灵台县| 广州市| 甘洛县| 厦门市| 调兵山市| 景泰县| 卫辉市| 桦川县| 安阳市| 铜陵市| 石嘴山市| 竹溪县| 洮南市| 汉中市| 黎城县| 宜昌市| 民勤县| 阿拉尔市| 湖口县| 偃师市| 沾化县| 上栗县| 长汀县| 监利县| 鄂托克前旗| 衡阳市| 深州市| 临泽县| 遂川县| 芷江| 松滋市| 长白| 古田县| 白城市|