Mysql先排序後分組簡單方法
阿新 • • 發佈:2020-12-10
技術標籤:資料庫
Mysql先排序後分組簡單方法
mysql常見的排序分組是使用子查詢先排序再分組,我們來用另外一種方式實現簡單的分組排序
- 建立測試資料表
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='使用者';
- 生成測試資料
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()));
- 需求: 查詢出不同性別中的年齡最大的名字
select SUBSTRING_INDEX(GROUP_CONCAT(u_name order by u_age desc),',',1) as username from `user` group by u_gender
- 查詢結果
注意:
函式SUBSTRING_INDEX(str, delimiter, count) 返回一個 str 的子字串,在 delimiter 出現 count 次的位置擷取。 如果 count > 0,從則左邊數起,且返回位置前的子串; 如果 count < 0,從則右邊數起,且返回位置後的子串。