通过“SELECT”命令选择每组的前两条记录的最佳方法是什么?

2024-05-09

例如我有下表:

id group data
1 1 aaa
2 1 aaa
3 2 aaa
4 2 aaa
5 2 aaa
6 3 aaa
7 3 aaa
8 3 aaa

通过“SELECT”命令选择每组的前两条记录的最佳方法是什么? 如果没有好的方法,您建议使用什么例程?(PHP)

(模型结果)

1 1 aaa
2 1 aaa
3 2 aaa
4 2 aaa
6 3 aaa
7 3 aaa

我知道子查询中 a.id >= b.id 的交叉连接可以工作,但我正在寻找一种更具可扩展性的解决方案,可以应用于具有数百万条记录的表。谢谢


select a.*
from Tablename a
where 
(
   select count(*) 
   from Tablename as b
   where a.group = b.group and a.id >= b.id
) <= 2
  • SQLFiddle 演示 http://www.sqlfiddle.com/#!2/1b596/3
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过“SELECT”命令选择每组的前两条记录的最佳方法是什么? 的相关文章

随机推荐