如何在限制一个SQL查询中不同ID的数量的同时获取不同数量的行?
问题描述:
假设我有一张桌子,里面有两个id,series_id和match_id。 series_id可以重复,但match_ids是唯一的。另外,每个系列可能的match_ids数量可以在1到5之间变化。我想要选择排名前10的系列以及与它们相关的所有match_ids。换句话说,如果我想选择前10名,我最终可以选择少至10个match_ids或多达50个match_ids。我怎样才能做到这一点?如何在限制一个SQL查询中不同ID的数量的同时获取不同数量的行?
编辑:这是前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重复三次。对于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
+0
你是个野兽,谢谢你! – avbor
也可以显示数据和期望输出的例子吗? –
match_id是唯一的还是match_id和series_id的组合是唯一的? –