Получить последнюю запись каждого месяца в MySQL....?
У меня возникла проблема при написании запроса для MySQL.
У меня есть следующие поля в DB
id created_on status
1 2011-02-15 12:47:09 1
2 2011-02-24 12:47:09 1
3 2011-02-29 12:47:09 1
4 2011-03-11 12:47:09 1
5 2011-03-15 12:47:09 1
6 2011-03-22 12:47:09 1
7 2011-04-10 12:47:09 1
8 2011-04-11 12:47:09 1
Мне нужно select the last record of each month
.
То есть для month FEB record # 3
month MARCH record # 6
и для month APRIL record # 8
Пожалуйста, помогите мне.....
Спасибо заранее.
Ответы
Ответ 1
Настроить ответ Даэра:
SELECT r.*
FROM table AS r
JOIN (
SELECT MAX(t.created_on) AS created_on
FROM table AS t
GROUP BY YEAR(t.created_on), MONTH(t.created_on)
) AS x USING (created_on)
Убедитесь, что у вас есть индексы на created_on, иначе этот запрос убьет вашу базу данных, если эта таблица получит более нескольких сотен строк.
Ответ 2
SELECT * FROM table
WHERE created_on in
(select DISTINCT max(created_on) from table
GROUP BY YEAR(created_on), MONTH(created_on))
Ответ 3
Сначала вам нужно группироваться по годам и месяцам (иначе вы будете отфильтровывать месяцы в другие годы). Используйте MAX(), чтобы получить максимальную дату для каждой группы.
SELECT *, MAX(created_on) FROM table
GROUP BY YEAR(created_on), MONTH(created_on)
Ответ 4
Предполагая, что есть только одна запись за день;
SELECT * from table where created_on IN (Select MAX(created_on) FROM table
GROUP BY YEAR(created_on), MONTH(created_on) )