我有一张桌子“玩家”
在此表中,列为'ID','surname','nation'
我需要查询,结果必须显示受国家限制的国家/地区的玩家列表
防爆
桌上型游戏机
ID surn.. nation
1 Garcia spa
2 smith gbr
3 rossi ita
4 villa spa
5 renoir fra
6 muller ger
7 conti ita
8 johnson usa
9 james gbr
10 lopez spa
11 dubois fra
12 petit fra
13 popov rus
14 rodriguez spa
15 weber ger
16 ivanov rus
17 gonzales spa
18 wagner ger
19 bruni ita
20 Smirnov rus
21 white gbr
22 schmidt ger
23 Armstrong usa
24 green gbr
25 Schulz ger
结果集
Nation| surname-
Spa |Garcia-
Spa| villa-
Spa| lopez-
Spa |rodriguez-
Gbr |smith-
Gbr |james-
Gbr| white-
Gbr| green -
Ita| rossi-
Ita |conti-
Ita |bruni-
Fra |renoir-
Fra| dubois-
Fra| petit-
Ger |muller-
Ger| weber-
Ger| wagner-
Ger |schmidt-
Usa |johnson -
Usa |armstrong-
Rus| popov-
Rus |ivanov-
Rus |Smirnov -
答案 0 :(得分:0)
具有row_number()
窗口功能:
select t.nation, t.surname
from (
select *,
row_number() over (partition by nation order by id) rn
from players
) t
where t.rn <= 4
order by t.nation, t.id
请参见demo。
或者,如果您的SQLite版本不支持窗口功能:
select t.nation, t.surname
from (
select p.*,
(select count(*) + 1 from players where nation = p.nation and id < p.id) rn
from players p
) t
where t.rn <= 4
order by t.nation, t.id
请参见demo。
结果:
| nation | surname |
| ------ | --------- |
| fra | renoir |
| fra | dubois |
| fra | petit |
| gbr | smith |
| gbr | james |
| gbr | white |
| gbr | green |
| ger | muller |
| ger | weber |
| ger | wagner |
| ger | schmidt |
| ita | rossi |
| ita | conti |
| ita | bruni |
| rus | popov |
| rus | ivanov |
| rus | Smirnov |
| spa | Garcia |
| spa | villa |
| spa | lopez |
| spa | rodriguez |
| usa | johnson |
| usa | Armstrong |