您的位置:首页 > 数据库 > MySQL

mysql分组后取前几条数据

2015-07-30 12:18 621 查看
oracle 里面有rank() over()函数可以解决对分组后的每组数据进行排序的问题,mysql里面没有类似的函数,可以用行内变量实现。

以下sql为取分组后每组的前两条数据:

SELECT
SITE_ID, TOTAL_COUNT, RANK
FROM
(
SELECT
SITE_ID
@rownum :=@rownum + 1 ROWNUM,
IF (@groupkey = SITE_ID, @rank :=@rank + 1, @rank := 1) AS RANK,
@groupkey := SITE_ID GROUPKEY
FROM
(
SELECT
SITE_ID
FROM
tab_review_area a
) t1,
(SELECT @rownum := 0, @groupkey := NULL ,@rank := 0) t2
) t3
WHERE
RANK <= 2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: