Mysql 獲取分組中最新的記錄

通過group_concat函數

  • ①group_concat函數

group_concat( [DISTINCT] 要連接的字段 [Order BY 排序字段 ASC/DESC] [Separator ‘分隔符’] )

作用:將要連接的字段按照排序字段的順序用分隔符連起來顯示,默認分隔符是”,”。
如:select group_concat(id order bydatedesc) fromtestgroup by category_id

按照時間排序將id連接起來,第一個一定是時間最新的。
這裏寫圖片描述

  • ②substring_index

substring_index(str,delim,count),str:要處理的字符串、delim:分隔符、count:計數

例子:
  SELECT SUBSTRING_INDEX('www.test.com','.',1);
  結果是:www
  SELECT SUBSTRING_INDEX('www.test.com','.',2)
  結果是:www.test
  SELECT SUBSTRING_INDEX('www.test.com','.',-2);
  結果爲:test.com
也就是說,如果count是正數,那麼就是從左往右數,第N個分隔符的左邊的全部內容,相反,如果是負數,那麼就是從右邊開始數,第N個分隔符右邊的所有內容。

  • ③解析
    GROUP_CONCAT將group by 後的id排序後連接起來,SUBSTRING_INDEX取得每行(每個分類)的第一個。
SELECT * FROM `test` WHERE id IN(SELECT SUBSTRING_INDEX(GROUP_CONCAT(id ORDER BY `date` DESC),',',1) FROM `test` GROUP BY category_id ) ORDER BY `date` DESC;

以上內容來源於網絡,向原作者致敬。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章