MariaDB如何将2列或更多列组合在一起

时间:2019-08-15 12:03:39

标签: mariadb

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

我有一个像这样的表(还有更多列):

+------------+-----------+
| dayOfMonth | hourOfDay |
+------------+-----------+

让我们假设此表是这样填充的:

+------------+-----------+
| dayOfMonth | hourOfDay |
+------------+-----------+
|         11 |         0 |
|         11 |         0 |
|         11 |         1 |
|         12 |         0 |
|         12 |         0 |
|         12 |         1 |
+------------+-----------+

我想要得到的是这个(实际上是所有列)(每个dayOfMonth的每个hourOfDay):

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

2 个答案:

答案 0 :(得分:1)

您可以group by dayOfMonth, hourOfDay

SELECT dayOfMonth, hourOfDay 
FROM table 
GROUP BY dayOfMonth, hourOfDay
ORDER BY dayOfMonth, hourOfDay

这样,您将无法选择其他列(如果存在),而只能使用MIN()MAX()AVG()等对其进行汇总。
或使用DISTINCT

SELECT DISTINCT dayOfMonth, hourOfDay 
FROM table 
ORDER BY dayOfMonth, hourOfDay

答案 1 :(得分:0)

您的问题尚不清楚。这会将您的初始数据转换为建议的数据:

SELECT DISTINCT
        dayOfMonth, hourOfDay
    FROM tbl;

“ Every hourOfDay”-您是否要每天24小时连续工作?因此,请参见MariaDB中的“序列表”(例如seq_0_to_23)功能。