当前位置:首页 > 开发 > 数据库 > 正文

mysql 取每组前几条记录

发表于: 2015-03-16   作者:daizj   来源:转载   浏览:
摘要: 一、对分组的记录取前N条记录:例如:取每组的前3条最大的记录 1.用子查询: SELECT * FROM tableName a  WHERE 3> (SELECT COUNT(*) FROM  tableName b WHERE b.id=a.id AND b.cnt>a. cnt) ORDER BY a.id,a.account DE

一、对分组的记录取前N条记录:例如:取每组的前3条最大的记录

1.用子查询:
SELECT * FROM tableName a  WHERE 3>
(SELECT COUNT(*) FROM  tableName b WHERE b.id=a.id AND b.cnt>a. cnt)
ORDER BY a.id,a.account DESC
 
2.用exists半连接:
SELECT * FROM  tableName a  WHERE EXISTS
(SELECT COUNT(*) FROM  tableName b WHERE b.id=a.id AND a.account<b. cnt HAVING COUNT(*)<3)
ORDER BY a.id,a. cntDESC
 
二、同理可以取组内最小的N条记录: 例如:取每组的前3条最小的记录
1、子查询
SELECT * FROM  tableName  a  WHERE 3>
(SELECT COUNT(*) FROM  tableName  b WHERE b.id=a.id AND b. cnt<a. cnt)
ORDER BY a.id,a. cnt DESC
 
2、用exists:
SELECT * FROM  tableName  a  WHERE EXISTS
(SELECT COUNT(*) FROM  tableName  b WHERE b.id=a.id AND a. cnt>b. cnt HAVING COUNT(*)<3)
ORDER BY a.id,a. cnt DESC
 
 

mysql 取每组前几条记录

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
Mysql查询数据库表中前几条记录问题,我想好多朋友也会碰到,下面我简单的说下我遇到的情况,且解决
本文非原创,仅根据网上查询结果按自己的表结构做了一下整理。因分辨不出哪个是原创,链接就不加了
数据库表结构: 其中主键字段为:flight_month、carrier、ticket_type、created_dt(创建时间);
本文为原创,如需转载,请注明作者和出处,谢谢! 假设有一个表,SQL语句如下: CREATE TABLE [ dbo
由于ORACLE不支持SELECT TOP语句,所以在ORACLE中经常是用ORDER BY跟ROWNUM和子查询的组合来实现SEL
由于ORACLE不支持SELECT TOP语句,所以在ORACLE中经常是用ORDER BY跟ROWNUM和子查询的组合来实现SEL
按班级分组查询,每组查询出5条数据。 数据表结构如下: DROP TABLE IF EXISTS `test1`; CREATE TAB
问题描述如下: 有一些program,每个program可能暂时无联系人,有一个联系人或不止一个联系人。需要
使用sqlserver 给每组记录顺序编号 项目业务需要,给每组记录编号,方便在行转列时,正对每个人定位
在日常生活方面,我们经常需要记录一些操作,类似于日志的操作,最后的记录才是有效数据,而且可能
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号