如何在限制一个 SQL 查询中不同 ID 的数量的同时获得不同数量的行?

How can I get a various number of rows while limiting the number of different ids in one SQL query?

假设我有一个 table,有两个 ID,series_id 和 match_id。 series_id 可以重复,但 match_id 是唯一的。此外,每个系列可能的 match_id 数量可以从 1 到 5 不等。我想要 select 前 10 个系列以及与它们关联的所有 match_id。换句话说,如果我想要 select 前 10 个系列,我最终可能 selecting 少至 10 match_ids 或多达 50 match_ids。我该怎么做?

编辑:这是前 10 个匹配 ID 的示例列表。

MatchID SeriesID
250059  3155
260071  3156
260086  3163
270079  3157
270080  3157
270081  3157
340566  3123
340607  3124
350551  3123
350552  3123

如您所见,SeriesId 重复了 3 次。对于 3157,对于 3123 至少两次。

理想情况下,我想要以下内容:

MatchID     SeriesID
1001400020      3150
1001400019      3150
1001400010      3150
270081          3157
270080          3157
270079          3157
1001320026      3151
1001320025      3151
1001320024      3151
1001320023      3151
1001320017      3151
750596          3146
750595          3146
750592          3146
750591          3146
760569          3145
760568          3145
760567          3145
760566          3145
760565          3145
760517          3144
760515          3144
760512          3144
1001380039      3131
1001380038      3131
1001380037      3131
1001380034      3131
1001310030      3128
1001310029      3128
1001300036      3128
1001370029      3130
1001370028      3130
1001370027      3130
1001370026      3130
1001370020      3130
260086          3163

因为在这种情况下,唯一系列id的数量总共是10个。

这适用于 MySQL:

SELECT * 
FROM myTable m INNER JOIN 
 (SELECT DISTINCT series_id 
  FROM myTable 
  ORDER BY series_id 
  LIMIT 10) t ON t.series_id = m.series_id

SqlFiddle demo