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 )