MariaDB如何通过组合的2个或多个列进行分组
我想每天每小时从我的MariaDB数据库中获取1个条目 我有一个这样结构的表,还有一些列:MariaDB如何通过组合的2个或多个列进行分组,mariadb,Mariadb,我想每天每小时从我的MariaDB数据库中获取1个条目 我有一个这样结构的表,还有一些列: +------------+-----------+ | dayOfMonth | hourOfDay | +------------+-----------+ 假设此表是这样填写的: +------------+-----------+ | dayOfMonth | hourOfDay | +------------+-----------+ | 11 | 0 | |
+------------+-----------+
| dayOfMonth | hourOfDay |
+------------+-----------+
假设此表是这样填写的:
+------------+-----------+
| dayOfMonth | hourOfDay |
+------------+-----------+
| 11 | 0 |
| 11 | 0 |
| 11 | 1 |
| 12 | 0 |
| 12 | 0 |
| 12 | 1 |
+------------+-----------+
我想得到的是,事实上,每个月的每一天的每一小时的所有列:
+------------+-----------+
| dayOfMonth | hourOfDay |
+------------+-----------+
| 11 | 0 |
| 11 | 1 |
| 12 | 0 |
| 12 | 1 |
+------------+-----------+
我可以通过这句话来实现这一点,但如果我想用整整一个月的时间来实现这一点,那就太长了:
(SELECT * FROM table WHERE dayOfMonth = 11 GROUP BY hourOfDay)
UNION
(SELECT * FROM table WHERE dayOfMonth = 12 GROUP BY hourOfDay)
您可以按dayOfMonth、hourOfDay进行分组:
这样,如果存在其他列,您就不能选择它们,只能使用MIN、MAX、AVG等对它们进行聚合。
或使用不同的:
你的问题不清楚。这将把您的初始数据转换为您的建议数据:
SELECT DISTINCT
dayOfMonth, hourOfDay
FROM tbl;
每天24小时-您是否希望每天24行的所有小时?当然,请参见MariaDB中的序列表,例如,seq_0_至_23功能。您的意思是按dayOfMonth从表组中选择*吗,按dayOfMonth选择hourOfDay顺序,hourOfDay?是的,谢谢,这很有效。我找了一个小时,感觉有点糟糕。。。。
SELECT DISTINCT dayOfMonth, hourOfDay
FROM table
ORDER BY dayOfMonth, hourOfDay
SELECT DISTINCT
dayOfMonth, hourOfDay
FROM tbl;