小编典典

用“居于选择”命令选择每个组的前两个记录的最佳方法是什么?

sql

例如,我有下表:

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进行交叉联接是可行的,但是我正在寻找一种可扩展性更高的解决方案,该解决方案可以应用于具有数百万条记录的表。谢谢


阅读 135

收藏
2021-04-17

共1个答案

小编典典

select a.*
from Tablename a
where 
(
   select count(*) 
   from Tablename as b
   where a.group = b.group and a.id >= b.id
) <= 2
2021-04-17