如何在限制一个 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
假设我有一个 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