我有一张表work_history('id','name','work','work_month','work_year')。
我需要查询当前当前月份数据,但如果当前月份不存在数据,则在这种情况下检索上个月的数据.....直到那时数据未找到。 NLY 对于Ex-如果发现11-2012的数据,那么只检索这些数据,不需要检查上个月,但如果没有找到,那么检查上个月10-2012。如果再次找不到,请查看09-2012。
提前致谢
答案 0 :(得分: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