оператор mysql select для удаления одной строки с самой высокой датой из каждого месяца

#mysql

#mysql

Вопрос:

Пример:

Столбцы:

 id, date(mysql date), other fields....
 

Строки:

 1, 2011-01-11
2, 2011-31-10
3, 2011-30-10
4, 2011-25-09
5, 2011-25-09
6, 2011-25-09
7, 2011-21-09
 

Оператор Mysql select для выбора последней даты каждого месяца в заданных строках… не просто уникальный… если за месяц последняя дата содержит более 1 строки, тогда необходимо повторно просмотреть все строки этой последней даты.

Учитывая приведенный выше пример, оператор select должен дать следующий набор результатов

 1, 2011-01-11
2, 2011-31-10
4, 2011-25-09
5, 2011-25-09
6, 2011-25-09
 

Ответ №1:

Это даст вам правильные строки:

 SELECT * 
FROM your_table 
WHERE date_col IN (
  SELECT MAX(date_col) 
  FROM your_table 
  GROUP BY MONTH(date_col)
) 

Ответ №2:

Ваша спецификация конфликтует. Тем не менее, следующий запрос извлечет все строки с самой высокой датой за месяц.

 SELECT * FROM your_table WHERE date = 
  (SELECT MAX(date) FROM your_table 
   GROUP BY DATE_FORMAT('%Y-%m'), date_column))