我想每小时从我的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)
答案 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
)功能。