实现java排行榜功能,最主要的使用到数据库的GROUP_CONCAT()函数。
主要涉及到mysql的几个函数:
-
group_concat() 用法,分组查询某一列的所有值,默认以逗号隔开,可以排序,用某个分隔符分隔, group_concat(name orderby id desc separator ‘/’)。
-
left(str,len) 返回具有指定长度len的字符串str的左边部分。
-
location(substr,str) 返回substr字符串在str字符串第一次出现的位置 。
-
concat(str,substr) 连接符,两个字符串相连接。
-
substring_index(str,’,’,len) 在字符串中以逗号或者其他符号为索引,获取不同索引位的字符。
-
其中主要是group_concat()分组统计函数。
SELECT
created_user_id,
created_time,
SUBJECT,
MAX( score ) AS score,
SUBSTRING_INDEX(GROUP_CONCAT( use_time ORDER BY score DESC, use_time ASC ),',',1) AS use_time
FROM
exam_record
WHERE
`subject` = '1'
AND exam_status = 2
AND delete_flag = 0
GROUP BY
created_user_id
ORDER BY
score DESC,
use_time ASC
LIMIT 100