用“居于选择”命令选择每个组的前两个记录的最佳方法是什么?
技术问答
217 人阅读
|
0 人回复
|
2023-09-14
|
例如,我有下表:
" `4 \7 Q% x7 D# ~8 _2 k" C p0 Nid group data1 1 aaa2 1 aaa3 2 aaa4 2 aaa5 2 aaa6 3 aaa7 3 aaa8 3 aaa通过“ SELECT选择每组前两个记录的最佳方法是什么?如果没有好的方法,建议使用什么例程?PHP中); ~0 A0 D ^3 \+ v
(模型结果)
1 O5 U$ s o& `1 1 aaa2 1 aaa3 2 aaa4 2 aaa6 3 aaa7 3 aaa我知道在子查询中通过a.id> = b.id交叉连接是可行的,但我正在寻找一种可扩展性更高的解决方案,可以应用于记录数百万的表格。非常感谢。
- z1 h$ Y- Z9 m( F4 D9 Y6 u : X% N; L! W, L4 ^, L' S# o
解决方案:
" `. j! }( o8 w7 i5 p+ U0 \$ _. U6 [ select a.*from Tablename awhere ( select count(*) from Tablename as b where a.group = b.group and a.id >= b.id) </u> |
|
|
|
|
|