mysql如何實現先排序再分組,獲取第乙個元素

2021-09-04 09:09:33 字數 1578 閱讀 5260

下面說個簡單列子

需求:查詢出每個班級人數,以及各班年齡最大的那一位

現在有一張student表如下:

這個sql用到了substring_index(str,delim,count)、group_concat(expr)1、group_concat(expr)意思是 拼接expr,以『 ,』連線,可以使用這個函式進行排序

group_concat(age order by age desc)這句sql得到的結果是:

select group_concat(age order by age desc)

from student

如果加上分組的話

2、substring_index(str,delim,count)意思是以delim分割str,取第count個元素

注意:函式group_concat,但在使用時,肯能導致如下錯誤。

error 1260 (hy000): row 17 was cutbygroup_concat()

原因:group_concat截斷了結果,group_concat有個最大長度的限制,超過最大長度就會被截斷掉

解決: 

setglobalgroup_concat_max_len=102400;

mysql 先排序再分組的sql語句實現

最近專案中有乙個需求,需要先分組,再排序的功能。搞了好久,經過敏大大 後台兄弟 指導,終於搞出來了,分享給大家 demo 學生資訊表 第一時間想到 sql select from t test group by name,type order by score desc 結果 發現,並不能滿足我們需...

mysql子查詢先排序再分組的問題

有表如下,要找到 family name 為 green 和 smith 的身高最高的兩個人的 given name。id family name given name height 1 smith mike 157 2 smith ashlin 165 3 smith eason 181 4 sm...

oracle先排序再分頁

oracle排序分頁查詢和mysql資料庫的語句還不一樣,這裡做簡單的記錄。select a.rownum rn from select from v log a order by operatetime desc結果 可以發現,按時間排序了,但是rownum並不是從小到大,因為oracle是先生成...