【发布时间】:2020-11-04 08:21:37
【问题描述】:
小提琴:https://www.db-fiddle.com/f/9F7XPiGtuQAYXQ99HfNJGN/3
CREATE TABLE table_1 (
`country` VARCHAR(2),
`category` VARCHAR(2),
`cnt` INT
);
INSERT INTO table_1
(`country`, `category`, `cnt`)
VALUES
('US', 'AA', 20),
('US', 'BB', 15),
('US', 'CC', 25),
('US', 'DD', 30),
('FR', 'AA', 10),
('FR', 'BB', 5),
('FR', 'CC', 50),
('FR', 'DD', 60);
这是数据:
| country | category | cnt |
| ------- | -------- | --- |
| FR | DD | 60 |
| FR | CC | 50 |
| FR | AA | 10 |
| FR | BB | 5 |
| US | DD | 30 |
| US | CC | 25 |
| US | AA | 20 |
| US | BB | 15 |
我想获取每个国家/地区的前 3 行(前 3 个类别),按 cnt 列排序。例如,我想要:
| country | category | cnt |
| ------- | -------- | --- |
| FR | DD | 60 |
| FR | CC | 50 |
| FR | AA | 10 |
| US | DD | 30 |
| US | CC | 25 |
| US | AA | 20 |
该表尚未由 cnt 订购。我尝试过 LIMIT 3 或 TOP 3,但它并没有达到我想要的效果/总体上给了我前 3 名,但不是针对每个国家/地区。
【问题讨论】: