sql - 抽样组而不是行
问题描述
我想根据组 ID(ColA)而不是行随机选择。假设我的初始表是这样的:
+---------------------+
|ColA | ColB | ColC |
+---------------------+
| AA C 5 |
| AA C 8 |
| AA C 9 |
| BB D 3 |
| BB D 4 |
| CC E 1 |
| CC E 2 |
| CC E 3 |
| CC E 5 |
+---------------------+
我想得到这样的东西:
+---------------------+
ColA | ColB | ColC
+---------------------+
| AA C 5 |
| AA C 8 |
| AA C 9 |
| CC E 1 |
| CC E 2 |
| CC E 3 |
| CC E 5 |
+---------------------+
因此,假设我想从 Col A 随机获取整个分组。我已经这样做了,但它给了我随机行而不是组
SELECT distinct ColA,ColB, ColC FROM TABLE
ORDER BY RAND()
LIMIT 20000
我将不胜感激有关如何实施它的任何线索。
解决方案
根据您的描述,您可以在子选择中使用单列查询:
SELECT *
FROM dataset
WHERE ColA IN (
SELECT *
FROM (
SELECT distinct ColA
FROM dataset
)
ORDER BY rand()
LIMIT 2
)
推荐阅读
- dynamics-crm - 个人或公司拥有的 Dynamics CRM 实体
- java - Angular:具有多个参数的 HTTP POST 不起作用
- amazon-web-services - 带有自定义授权方的内部服务器错误 AWS API Gateway
- python - 散点图线到乱序数据
- pyspark - 多级聚合
- acumatica - 具有多个连接和 where 子句的 Search2
- python - Python读取“”内带有字符串的列
- command-line-interface - 如何将 Windows SMB(服务器消息块)共享从网络设备自动挂载到您的 linux 计算机
- javascript - 在添加行时阻止表行被添加到每一行
- javascript - 以合理的文件名保存 SVG 中包含的 BMP