mysql - 从每个日期中选择一个随机结果
问题描述
我有一个结构如下的数据库:
int, date, varchar
1, 2021-07-25, aaaa
2, 2021-07-25, aaba
3, 2021-07-25, aabb
4, 2021-07-26, bbbb
5, 2021-07-26, bbba
6, 2021-07-26, bbaa
7, 2021-07-26, babb
我需要为每个日期随机抽取一个结果。因此,在此示例中,07-25 的一个结果和 07-26 的一个结果。
样本输出:
啊啊
啊啊啊啊
解决方案
这是一个至少满足简短的想法......
DROP TABLE IF EXISTS ralph97;
CREATE TABLE ralph97
(id INT AUTO_INCREMENT PRIMARY KEY
,date DATE NOT NULL
,my_string CHAR(4) NOT NULL
);
INSERT INTO ralph97 VALUES
(1,'2021-07-25','aaaa'),
(2,'2021-07-25','aaba'),
(3,'2021-07-25','aabb'),
(4,'2021-07-26','bbbb'),
(5,'2021-07-26','bbba'),
(6,'2021-07-26','bbaa'),
(7,'2021-07-26','babb');
...
WITH cte AS
(SELECT *, ROW_NUMBER() OVER (PARTITION BY date ORDER BY RAND()) x FROM ralph97)
SELECT id, date, my_string FROM cte WHERE x = 1;
+----+------------+-----------+
| id | date | my_string |
+----+------------+-----------+
| 3 | 2021-07-25 | aabb |
| 6 | 2021-07-26 | bbaa |
+----+------------+-----------+
WITH cte AS
(SELECT *, ROW_NUMBER() OVER (PARTITION BY date ORDER BY RAND()) x FROM ralph97)
SELECT id, date, my_string FROM cte WHERE x = 1;
+----+------------+-----------+
| id | date | my_string |
+----+------------+-----------+
| 2 | 2021-07-25 | aaba |
| 4 | 2021-07-26 | bbbb |
+----+------------+-----------+
推荐阅读
- javascript - 关于带按钮的模板字符串循环的建议
- visual-studio - 错误 JAVAC0000:错误:包 com.google.android.gms... 不存在
- javascript - 控件必须与文本标签相关联
- java - 如何在android studio中仅使用View Tag将图像用作背景图像?
- amazon-web-services - Zeppelin 错误 org.apache.thrift.transport.TTransportException
- javascript - 如何在 Javascript 中区分鼠标点击和触控板点击?
- java - 使用java进行游戏模拟有问题
- php - PHP:如何在另一个类中创建可通过 ::(双冒号,范围解析)访问的函数
- list - Prolog:定义命题逻辑语句运算符并将参数添加到列表
- java - 在 android 日历中添加用户无法修改的事件/提醒