SELECT * FROM t_pf_borrow pb WHERE 3 > ( SELECT COUNT(1) FROM t_pf_borrow WHERE platf_id = pb.platf_id AND rate > pb.rate ) ORDER BY pb.rate DESC
这是我写的,和你的差不多,但是效率低了,我是在工作环境用的,才3百多条就要10多秒,大哥,有性能好一点的写法吗
select * from t_pf_borrow as d
where status='1' and EXISTS (
select count(1) from t_pf_borrow
where platf_id=d.platf_id and rate > d.rate
having count(1)<3
) order by d.rate desc
@IT、小白: having count(1)<3 这里怎么单独出现的HAVING 子句, 本身就不符合规范
@IT、小白: sql效率低 用工具调试, 找哪里执行慢, 该加索引加索引 ; EXISTS () 本来就比较慢
@、熙和: 受教了,谢谢大哥
百度 分组取前几条 sql
大哥,回答能专业点吗,如果我之前肯定是百度过啊,但是没有我要的答案。我用的数据库是mysql
@IT、小白: 我随便一搜就全是答案啊.
http://www.cnblogs.com/zhzhang/p/5336935.html
select * from (select * from t_pf_borrow order by platf_id DESC ) limit 3
先降序 然后取前三行
@IT、小白: 额 我理解错了。。