MySQL-MYSQL 如何查询分组排序后再对每组LIMIT n

发布于 2017-01-29 01:32:48 字数 673 浏览 1782 评论 5

遇到一个问题,有这样一个表:
mysql> desc recordMap;

+-------------+---------------------+------+-----+---------+----------------
| Field | Type | Null | Key | Default | Extra
+-------------+---------------------+------+-----+---------+----------------
| id | int(11) unsigned | NO | PRI | NULL | auto_increment |
| mapId | int(10) unsigned | NO | | | |
| playTime | int(10) unsigned | NO | | |
| ...后面还有一些其他数据
+-------------+---------------------+------+-----+---------+----------------

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

浮生未歇 2017-10-18 15:34:59

http://wenku.it168.com/d_000791824.shtml
这里有好几种方法可以参考一下

夜无邪 2017-09-15 15:53:38

写个function

 CREATE FUNCTION `new_func`(mapid INTEGER(11))
RETURNS tinyint(4)
DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
begin

if (mapid = @map) then
set @auto_id = @auto_id +1;
else
set @auto_id = 1;
set @map = mapid;
end if;
return(@auto_id);
end;

select * from
(
select *, new_func(mapid) auto_id
from recordMap

order by mapid,playTime
) tmp
where tmp.auto_id <=2

浮生未歇 2017-05-01 17:36:49

刚才在本机试了下`这个sql是允许并列的,处理的办法暂时用mysql没想出来`
可以用程序去处理下`同组下留两条

虐人心 2017-03-13 01:16:27

试试这个sql语句,有可能还要需要改进下。

 SELECT id,mapId,playTime,COUNT(playTime) AS num FROM recordMap GROUP BY playTime,mapID HAVING num=2 ORDER BY mapId,playTime

晚风撩人 2017-03-08 14:16:06

给你一个参考链接吧,实现起来挺复杂的,而且效率也不会很高,建议不要在mysql中实现
http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文