MariaDB如何通过组合的2个或多个列进行分组

MariaDB如何通过组合的2个或多个列进行分组,mariadb,Mariadb,我想每天每小时从我的MariaDB数据库中获取1个条目 我有一个这样结构的表,还有一些列: +------------+-----------+ | dayOfMonth | hourOfDay | +------------+-----------+ 假设此表是这样填写的: +------------+-----------+ | dayOfMonth | hourOfDay | +------------+-----------+ | 11 | 0 | |

我想每天每小时从我的MariaDB数据库中获取1个条目

我有一个这样结构的表,还有一些列:

+------------+-----------+
| 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;