Несколько раз в месяц к таблице certant_region_stats добавляется новый залп записей с идентичной меткой времени, certants_modified. Я пытаюсь выбрать все записи из последнего залпа в месяц.MySQL: выберите последний набор записей за каждый месяц
Мои попытки разбить мою консоль:
SELECT *
FROM certificant_region_stats
WHERE certificants_modified
IN (
SELECT MAX(certificants_modified)
FROM certificant_region_stats
GROUP BY YEAR(certificants_modified), MONTH(certificants_modified)
)
ORDER BY certificants_modified DESC;
подзапрос прекрасно работает сам по себе, так что я предполагаю, что я использую в неправильном?
EDIT: выборочные данные
| id | country | certificants_number | certificants_modified |
==============================================================
| 1 | USA | 2 | 2015-06-22 10:24:55 |
| 2 | Canada | 4 | 2015-06-22 10:24:55 |
| 3 | USA | 5 | 2015-06-09 09:18:24 |
| 4 | Canada | 6 | 2015-06-09 09:18:24 |
| 5 | USA | 8 | 2015-05-15 11:30:00 |
| 6 | Canada | 8 | 2015-05-15 11:30:00 |
| 7 | USA | 3 | 2015-05-02 08:45:01 |
| 8 | Canada | 7 | 2015-05-02 08:45:01 |
Я бы ожидать, что она вернется * из строк 1, 2, 5 и 6.
Пожалуйста, разместите небольшой образец строк из таблицы 'certant_region_stats' вместе с тем, что вы ожидаете от вывода запроса. Неясно, уникально ли значение 'certants_modified', или комбинация этого значения вместе с датами делает его уникальным. –
@MichaelBerkowski, см. Мое редактирование – GreenTaq
Что означает «сбой моей консоли»? Как я вижу, ваш запрос идеально подходит для этой задачи. Кстати, индекс на certants_modified должен оказаться полезным. –