id | group_name | value |
---|---|---|
1 | a | 0 |
2 | a | 8 |
3 | a | 9 |
4 | a | 3 |
5 | b | 5 |
6 | b | 6 |
7 | b | 4 |
8 | c | 2 |
9 | c | 9 |
1 2 3 4 5 6 7 8 9 10 | SELECT `tbl_test`.`group_name` AS `group_name`, MAX (`tbl_test`.`value`) AS `value` FROM `tbl_test` GROUP BY `tbl_test`.`group_name` ORDER BY `tbl_test`.`group_name` ; |
group_name | value |
---|---|
a | 9 |
b | 6 |
c | 9 |
1 2 3 4 5 6 7 8 9 10 11 | SELECT `tbl_test`.`group_name` AS `group_name`, SUBSTRING_INDEX( GROUP_CONCAT(`tbl_test`.`value` ORDER BY `tbl_test`.`value` DESC SEPARATOR "," ), "," , 2 ) AS ` values ` FROM `tbl_test` GROUP BY `tbl_test`.`group_name` ; |
group_name | value |
---|---|
a | 9,8 |
b | 6,5 |
c | 9,2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | SET @row_num := 0; SET @prev_group := NULL ; SELECT `t`.`group_name` AS `group_name`, `t`.`value` AS `value` FROM ( SELECT @row_num := IF(@prev_group = `tbl_test`.`group_name`, @row_num + 1, 1) AS `row_num`, @prev_group := `tbl_test`.`group_name`, `tbl_test`.`group_name` AS `group_name`, `tbl_test`.`value` AS `value` FROM `tbl_test` HAVING `row_num` <= 2 ORDER BY `tbl_test`.`group_name` ASC , `tbl_test`.`value` DESC ) AS `t` ; |
group_name | value |
---|---|
a | 9 |
a | 8 |
b | 6 |
b | 5 |
c | 9 |
c | 2 |