Я хочу получать 1 запись в день в час из моей базы данных MariaDB.
У меня есть таблица, структурированная так (с еще несколькими столбцами):
+------------+-----------+
| dayOfMonth | hourOfDay |
+------------+-----------+
Давайте предположим, что эта таблица заполнена так:
+------------+-----------+
| dayOfMonth | hourOfDay |
+------------+-----------+
| 11 | 0 |
| 11 | 0 |
| 11 | 1 |
| 12 | 0 |
| 12 | 0 |
| 12 | 1 |
+------------+-----------+
Что я хочу получить, это (на самом деле все столбцы) (Every hourOfDay для каждого dayOfMonth):
+------------+-----------+
| 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 ответа
Вы можете 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
Ваш вопрос неясен. Это преобразует ваши исходные данные в предложенные вами данные:
SELECT DISTINCT
dayOfMonth, hourOfDay
FROM tbl;
«Every hourOfDay» - хотите ли вы, чтобы все часы работали по 24 строки в день? Из этого, смотрите функцию «таблица последовательности» (например, seq_0_to_23
) в MariaDB.
Похожие вопросы
Новые вопросы
mariadb
MariaDB - это сервер базы данных с открытым исходным кодом, который предлагает функциональные возможности замены для MySQL.