我有一个包含数据的表,其中有一个名为id
的列,如下所示:
id | value 1 | value 2 | value 3 |
---|---|---|---|
1 | 244 | 550 | 1000 |
1 | 251 | 551 | 700 |
1 | 540 | 60 | 1200 |
... | ... | ... | ... |
2 | 19 | 744 | 2000 |
2 | 10 | 903 | 100 |
2 | 44 | 231 | 600 |
2 | 120 | 910 | 1100 |
... | ... | ... | ... |
我希望每id
个存在的样本行中获取50个样本行,但如果存在少于50个行,则该组只需获取整个数据点集.
例如,我想从id = 1
,id = 2
等随机 Select 最多50个数据点.
我以前找不到任何与此类似的问题,但我至少在逻辑上try 过解决方案,其中我可以迭代和合并所有查询id
并将其限制为50:
SELECT * FROM (SELECT * FROM schema.table AS tbl WHERE tbl.id = X LIMIT 50) UNION ALL;
个
但是很明显,您不能使用这种类型的解决方案,因为UNION ALL
需要将输出从一个id聚合到下一个id,并且我没有一个id
值的列表来代替tbl.id = X
中的X.
有没有一种方法可以通过收集唯一的id
个值的列表并合并所有结果来实现这一点,或者有没有更好的方法来实现这一点?