mysql select语句用于检索每个月中具有最高日期的单行

时间:2011-11-01 16:53:03

标签: 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行,则需要检索该最后日期的所有行。 / p>

考虑到上面的例子,select语句应该给出以下结果集

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

2 个答案:

答案 0 :(得分:0)

您的规格存在冲突。尽管如此,以下查询将检索一个月中具有最高日期的所有行。

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

答案 1 :(得分:0)

这将为您提供正确的行:

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