1

我有一张表 work_history('id','name','work','work_month','work_year')。

我需要查询当前月份的数据,但如果当前月份不存在数据,在这种情况下检索上个月的数据,依此类推.....直到找不到数据。nly For Ex-如果找到 11-2012 的数据,则仅检索此数据,无需检查上个月,但如果未找到,则检查上个月 10-2012。如果再次找不到检查 09-2012。

提前致谢

4

1 回答 1

0

您想要的月份是数据中可用的最大月份。它必须是当前月份或最接近它的月份。所以这样的查询应该是这样的:

select ......
from work_history
where work_month = (select max(work_month) from work_history)

请注意,如果列 work_month 是 char 列,您可能需要将数据转换为日期类型以便进行正确比较。基于上面示例中看到的格式:

select ......
from work_history
where str_to_date(work_month,'%m-%Y') = (select max(str_to_date(work_month,'%m-%Y')) from work_history)

编辑

在所有评论之后,以下查询应该修复我的错误,并根据用户 ID 提供数据:

select wh.*
from work_history wh, 
  (select id, max(str_to_date(work_month,'%m-%Y')) as mx_month 
   from work_history 
   where str_to_date(work_month,'%m-%Y') <= curdate()  
   group by id             
  ) wh2
where wh.id=wh2.id
and str_to_date(wh.work_month,'%m-%Y') = wh2.mx_month
于 2012-11-10T20:16:17.833 回答