私は今SQLに苦労しています。
行 ID、名前、国、人口を含むテーブル都市を取得しました。
ID | name | country | population
1 | Shanghai | CN | 14608512
2 | Buenos Aires | AR | 13076300
3 | Mumbai | IN | 12691836
4 | Karachi | PK | 11624219
5 | Beijing | CN | 7480601
6 | Wuhan | CN | 4184206
7 | Berlin | DE | 3426354
8 | Puyang | CN | 3590000
データベースには、人口が 15,000 人を超えるすべての都市の世界規模のデータが含まれています。現在、人口別に世界最大の都市を 50 取得しようとしています。
SELECT * FROM cities ORDER BY population DESC LIMIT 0,50
現在の問題は、中国で 12 都市、インドで 4 都市などを取得することです。しかし、国ごとに結果を制限する必要があるため、国ごとに 2 都市のみが返されます。
上記の例による結果:
ID | name | country | population
1 | Shanghai | CN | 14608512
2 | Buenos Aires | AR | 13076300
3 | Mumbai | IN | 12691836
4 | Karachi | PK | 11624219
5 | Beijing | CN | 7480601
7 | Berlin | DE | 3426354
しかし、私が言ったように、私はこの種の操作に適した SQL クエリに苦労しています。GROUP BY ... HAVING とさまざまなサブセレクトを試しましたが、正しい結果セットを返すものはありませんでした。