使用where子句根据最大值选择整行

时间:2015-06-06 09:28:40

标签: mysql

在MySQL中,我负责以下会计任务:

  • 我必须找到月份最新日期(给定月份数)
  • 的整行
  • 其中text = b

我从数据库中拿了一个片段来演示我的问题。

输入:

date        text
----------  ----
2015-05-01   b
2015-04-30   a
2015-04-29   b
2015-04-29   a
2015-04-28   b

预期:

date        text
----------  ----
2015-04-29   b

我尝试了以下内容:

SELECT MAX(date), text
FROM table1
WHERE MONTH(date) = 4
AND text = b

但它没有返回正确的文字。我尝试使用此链接SQL Select only rows with Max Value on a Column解决问题 - 但我无法让它工作。

怎么办?

1 个答案:

答案 0 :(得分:2)

您可以按降序排列ORDER BY date列,然后只保留第一行,即最大(即最近)日期的行:

SELECT *
FROM table1
WHERE text = 'b' AND MONTH(date) = 4
ORDER BY date DESC
LIMIT 1