mysql分組取前N記錄

http://blog.csdn.net/acmain_chm/article/details/4126306php

http://bbs.csdn.net/topics/390958705html

 

1mysql

我只用到了其中的特殊形式,就是 分組取最新的一條記錄:sql

select *
from (select * from Table1 order by Score desc) t
group by ClsNo

利用的是 group by 只取第一條記錄須要用子查詢先把須要的記錄排序到第一位app

2018/8/21 排序好像無用,不能倒敘 url

2 下面這幾個都是利用子查詢驗證當前記錄是否知足前n這個條件spa

select * 
from Table1 a
where not exists (select 1 from Table1 where ClsNo=a.ClsNo and Score>a.Score);

這個是利用子查詢先查出小於最高值的記錄,再排除出最高記錄(感受繞了一圈).net

 

3 原理相似,利用子查詢查找排序前n位的記錄id並比較code

where id in( select id from tb1 where cataid = a.cataid order by score limit 0,10)

所用的msyql不支持:limit 在 in語句中不被支持server

 

4 原理相似,子查詢查找小於當前排名的記錄數,必須小於n才行

where 2 > ( select count(*) from tb1 where bid = a.bid and cid < a.cid )
相關文章
相關標籤/搜索