程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MYSQL中group by做分組查詢並排序

MYSQL中group by做分組查詢並排序

編輯:MySQL綜合教程

使用 group by 分組後,查詢的列表將按照主鍵的默認 asc 順序排序,使用 order by 只能對分組後的列表起作用,原因是 order by 的優先級低於 group by,那麼如何解決分組排序呢,下面我們一起來看具體操作辦法。


那麼如何解決使分組後的數據按照主鍵的 desc 排序輸出呢?

答案有兩種方法:

1、使用子查詢先把表進行排序,然後對字表進行 group by 查詢,此時得到的列將是子查詢的得到的一條記錄的列。
2、使用 max 函數對可計算最大值的列進行對比查詢,這種方法將只能使的對比列按照 desc 輸出,不影響其他列。

以上兩種方法的結果不同,使用的時候要按需來使用。

附例子:

表 tab1 有 3 列:主鍵id、名稱name、登錄時間time
id name time
1 a01 1
2 www.bKjia.c0m 2
3 a03 3
4 a02 4
5 a01 5
6 a04 6

需求:

1、要求查詢出各用戶的登陸次數和最後登陸時間

解決辦法:

第一種方法
select sub.name,count(sub.id) as login_nums,sub.time as last_time
from (select * from tab1 order by time) sub
group by sub.name
注意:此時查詢得到的每一個列都屬於原表的同一行記錄,如指定查詢 id,則 id 也是最新時間那行記錄的id bKjia.c0m

第二種方法

select name,count(id) as login_nums,max(time) as last_time
from tab1
group by name
注意此時查詢得到的每個列已經不再屬於原表的同一行記錄了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved