我有一个包含几个“类别”的表,称为collection
(例如 A、B、C、...)。
我想创建一个 SQL 查询来按每个选择 N 条记录collection
。
例如:
我想每个选择 2 条记录collection
。
表stac_item
:
id | collection | name
1 | A | name_01
2 | A | name_02
3 | A | name_03
4 | B | name_04
5 | B | name_05
6 | B | name_06
7 | B | name_07
8 | C | name_08
9 | C | name_09
我期待以下结果:
id | collection | name
1 | A | name_01
2 | A | name_02
4 | B | name_04
5 | B | name_05
8 | C | name_08
9 | C | name_09
我在下面创建了 SQL 查询,但 MariaDB 给出了以下错误消息:
#1235 - This version of MariaDB doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
SQL查询:
SELECT *
FROM stac_item a1
WHERE a1.collection IN
(
SELECT a2.collection
FROM stac_item a2
WHERE a1.collection = a2.collection
LIMIT 2
)
有人知道我可以使用的替代方案吗?我在互联网上搜索过,但我无法找到解决方案。
谢谢你。
编辑1:
我使用以下MariaDB Docker 映像:mariadb:10.5.3
您可以使用窗口函数
row_number
,如下所示:这个查询在一个巨大的表上可能会很慢