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

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

    震惊

    震惊

版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号