1. 程式人生 > 其它 >Mysql先排序後分組簡單方法

Mysql先排序後分組簡單方法

技術標籤:資料庫

Mysql先排序後分組簡單方法

mysql常見的排序分組是使用子查詢先排序再分組,我們來用另外一種方式實現簡單的分組排序

  1. 建立測試資料表
CREATE TABLE `user` (
  `u_id` int(11) NOT NULL AUTO_INCREMENT,
  `u_name` varchar(50) NOT NULL,
  `u_age` tinyint(3) unsigned NOT NULL,
  `u_gender` char(1) NOT NULL,
  `u_add_time` int(11) DEFAULT NULL,
  PRIMARY KEY (
`u_id`) ) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8 COMMENT='使用者';
  1. 生成測試資料
   insert into `user`(u_name,u_age,u_gender,u_add_time) VALUES('張三','18','男',UNIX_TIMESTAMP(NOW()));
   insert into `user`(u_name,u_age,u_gender,u_add_time) VALUES('馬七','16','男',UNIX_TIMESTAMP(NOW()));
   insert into
`user`(u_name,u_age,u_gender,u_add_time) VALUES('李四','18','女',UNIX_TIMESTAMP(NOW())); insert into `user`(u_name,u_age,u_gender,u_add_time) VALUES('王六','17','女',UNIX_TIMESTAMP(NOW())); insert into `user`(u_name,u_age,u_gender,u_add_time) VALUES('劉五','17','男',UNIX_TIMESTAMP(NOW())); insert into
`user`(u_name,u_age,u_gender,u_add_time) VALUES('周十','16','女',UNIX_TIMESTAMP(NOW()));
  1. 需求: 查詢出不同性別中的年齡最大的名字
select SUBSTRING_INDEX(GROUP_CONCAT(u_name order by u_age desc),',',1) as username from `user` group  by u_gender
  1. 查詢結果
    ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201209200338400.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lvbG9fbWU=,size_16,color_FFFFFF

注意:
函式SUBSTRING_INDEX(str, delimiter, count) 返回一個 str 的子字串,在 delimiter 出現 count 次的位置擷取。 如果 count > 0,從則左邊數起,且返回位置前的子串; 如果 count < 0,從則右邊數起,且返回位置後的子串。