我有一张表 work_history('id','name','work','work_month','work_year')。
我需要查询当前月份的数据,但如果当前月份不存在数据,在这种情况下检索上个月的数据,依此类推.....直到找不到数据。nly For Ex-如果找到 11-2012 的数据,则仅检索此数据,无需检查上个月,但如果未找到,则检查上个月 10-2012。如果再次找不到检查 09-2012。
提前致谢
我有一张表 work_history('id','name','work','work_month','work_year')。
我需要查询当前月份的数据,但如果当前月份不存在数据,在这种情况下检索上个月的数据,依此类推.....直到找不到数据。nly For Ex-如果找到 11-2012 的数据,则仅检索此数据,无需检查上个月,但如果未找到,则检查上个月 10-2012。如果再次找不到检查 09-2012。
提前致谢
您想要的月份是数据中可用的最大月份。它必须是当前月份或最接近它的月份。所以这样的查询应该是这样的:
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