mysql中group by之后想取到一组中的第二条记录怎么办?

ljz_1c 2017-09-14 10:26:37
mysql中group by之后想取到一组中的第二条记录怎么办?

如上图,如何用mysql实现?
...全文
3402 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 2017-12-01
  • 打赏
  • 举报
回复
select * from(select id, name, @id:=if(@name=name,@id+1,0) as _r, @name:=name as _n from tb,(select @id:=0, @name:=null)b order by name) aa where _r % 2;
Gunlance 2017-11-30
  • 打赏
  • 举报
回复
引用 3 楼 zjcxc 的回复:
去掉每组最小的一条,从剩下的数据中取每组最小的一条就可以了
SELECT * FROM tb
WHERE baoxian_id IN (
	SELECT min(baoxian_id) FROM tb
	WHERE baoxian_id NOT IN (
		SELECT min(baoxian_id) FROM tb GROUP BY name)
	GROUP BY name)
ORDER BY name;
那如果这些记录分组之后每组都有N个,我要取每组的第N/2个数呢?
zjcxc 2017-09-15
  • 打赏
  • 举报
回复
去掉每组最小的一条,从剩下的数据中取每组最小的一条就可以了
SELECT * FROM tb
WHERE baoxian_id IN (
	SELECT min(baoxian_id) FROM tb
	WHERE baoxian_id NOT IN (
		SELECT min(baoxian_id) FROM tb GROUP BY name)
	GROUP BY name)
ORDER BY name;
峰峰517 2017-09-15
  • 打赏
  • 举报
回复
刚才那种方法有点问题,另一种方法:
Select * from table a where 1=(select count(*) from table where a.name=name and a.time >time)
峰峰517 2017-09-15
  • 打赏
  • 举报
回复
先写一个获取第二个元素的聚合函数,假设是secitem select * from table where signtime in (select secitem(signtime) from table group by name)

56,678

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧