得到每组前几条数据

原创 2007年03月09日 10:12:00

--得到每组前几条数据
--假設每組Col1中, Col3不會重復

--建立測試環境
Create Table TEST
(Col1 Varchar(10),
 Col2 Varchar(10),
 Col3 Int)
--插入數據
Insert TEST Select 'BD1V','Label', 4
Union All Select 'BD1V', 'BATT', 2
Union All Select 'BD1V', 'ODD', 3
Union All Select 'BD1V', 'HDD', 5
Union All Select 'BD1V', 'LCD', 1
Union All Select 'BD1W','HDD', 3
Union All Select 'BD1W','RAM', 8
Union All Select 'BD1W','TP CABLE', 5
Union All Select 'BD1W','LCD', 6
Union All Select 'BD1W','Label', 2
Union All Select 'BL3', 'LCD CABLE', 7
Union All Select 'BL3', 'LABEL', 6
Union All Select 'BL3', 'LCD', 5
Union All Select 'BL3', 'RAM', 1
Union All Select 'BL3D', 'Label', 4
GO
--測試
--方法一:
Select Col1, Col2, Col3 From TEST A
Where (Select Count(*) From TEST Where Col1 = A.Col1 And Col3 > A.Col3) < 3
Order By Col1, Col3 Desc
--方法二:
Select Col1, Col2, Col3 From TEST A
Where Exists (Select Count(*) From TEST Where Col1 = A.Col1 And Col3 > A.Col3 Having Count(*) < 3)
Order By Col1, Col3 Desc
--方法三:
Select Col1, Col2, Col3 From TEST A
Where Col3 In (Select TOP 3 Col3 From TEST Where Col1 = A.Col1 Order By Col3 Desc)
Order By Col1, Col3 Desc
GO
--刪除測試環境
Drop Table TEST
--結果
/*
Col1  Col2   Col3
BD1V HDD  5
BD1V Label  4
BD1V ODD  3
BD1W RAM  8
BD1W LCD   6
BD1W TP CABLE 5
BL3  LCD CABLE 7
BL3  LABEL  6
BL3  LCD   5
BL3D Label  4
*/

Mysql获取每组前N条记录

Select基础知识 我们在实现select语句的时候,通用的sql格式如下: select *columns* from *tables* where *predicate* ...
  • zinss26914
  • zinss26914
  • 2016年10月21日 17:53
  • 4207

mysql分组取每组前几条记录(排序)

[sql] view plaincopy CREATE TABLE `mygoods` (     `goods_id` int(11) unsigned NOT NULL AUTO_...
  • come_on_air
  • come_on_air
  • 2017年06月07日 18:02
  • 2407

sql分组后查找每组的前几条记录语句

常用的sqlserver,mysql,oracle等数据库sql语句都是遵循sql标准,但是每种数据库都有自己的特点。 如果想做到程序兼容性更好,后期维护更方便,还是建议尽量使用各种数据库通用的sql...
  • jinjin603
  • jinjin603
  • 2016年06月01日 11:32
  • 2080

[mysql] 先按某字段分组再取每组中前N条记录

From: http://blog.chinaunix.net/uid-26729093-id-4294287.html 请参考:http://bbs.csdn.net/topics/3300212...
  • changgongzhao
  • changgongzhao
  • 2015年12月20日 09:59
  • 1440

mysql分组取每组前几条记录(排名) 附group by与order by的研究

本文转自:http://www.cnblogs.com/mo-beifeng/archive/2012/02/07/2341886.html --按某一字段分组取最大(小)值所在行的数据 /*...
  • a19860903
  • a19860903
  • 2016年04月13日 15:03
  • 5240

mysql分组查询取前几条

最近对mysql分组查询取前几条这个问题做个总结 1:建表,搞点测试数据 CREATE TABLE IF NOT EXISTS test ( id tinyint unsigned NOT ...
  • u011575570
  • u011575570
  • 2015年11月20日 23:09
  • 3972

mysql分组取每组前几条记录

原文:http://www.educity.cn/wenda/404337.html mysql分组取每组前几条记录--按某一字段分组取最大(小)值所在行的数据/*数据如下:namev mys...
  • important0534
  • important0534
  • 2016年06月21日 14:28
  • 284

HBase总结(二十)HBase常用shell命令详细说明

进入hbase shell console $HBASE_HOME/bin/hbase shell 如果有kerberos认证,需要事先使用相应的keytab进行一下认证(使用kinit命令),认...
  • lifuxiangcaohui
  • lifuxiangcaohui
  • 2014年12月23日 11:49
  • 4322

Oracle分组查询取每组排序后的前N条记录

项目中用到Oracle分组查询取每组排序后的前N条记录,group by 只能返回每个组的单条统计。所以用OVER(PARTITION BY)函数,具体详见baidu.com 建个测试表test_ab...
  • wangchsh2008
  • wangchsh2008
  • 2016年12月01日 12:13
  • 4587

各种数据库查询前几条数据的方法

1. ORACLE SELECT * FROM TABLE1 WHERE ROWNUM
  • qhwc2009
  • qhwc2009
  • 2015年05月05日 09:27
  • 456
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:得到每组前几条数据
举报原因:
原因补充:

(最多只允许输入30个字)