MYSQL查询,用于检索当月数据以及检查上月数据

MYSQL查询,用于检索当月数据以及检查上月数据,mysql,Mysql,我有一张桌子,上面有历史记录“id”,“姓名”,“工作”,“工作月”,“工作年” 我需要查询当前月份的数据,但如果当前月份的数据不存在,则在本例中检索上个月的数据,依此类推……直到找不到数据为止。 仅仅 对于Ex-如果找到2012年11月的数据,则仅检索此数据,无需检查前一个月的数据,但如果未找到,则检查2012年10月的数据。如果再次未找到,请检查09-2012 提前感谢您想要的月份是数据中可用的最长月份。它必须是当前月份或最接近它的月份。因此,这样的查询应该如下所示: select ....

我有一张桌子,上面有历史记录“id”,“姓名”,“工作”,“工作月”,“工作年”

我需要查询当前月份的数据,但如果当前月份的数据不存在,则在本例中检索上个月的数据,依此类推……直到找不到数据为止。 仅仅 对于Ex-如果找到2012年11月的数据,则仅检索此数据,无需检查前一个月的数据,但如果未找到,则检查2012年10月的数据。如果再次未找到,请检查09-2012


提前感谢

您想要的月份是数据中可用的最长月份。它必须是当前月份或最接近它的月份。因此,这样的查询应该如下所示:

select ......
from work_history
where work_month = (select max(work_month) from work_history)
请注意,如果列work\u 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

你尝试了什么,请发一些代码谢谢你的快速回复,这将对我有帮助。但是在我的例子中,在这个表格中,work\u history'id',user\u id',name',work',work\u month',work\u year.实际上我有一个错误,我将编辑我的帖子。我假设数据不包含高于当前月份的月份,这不一定是真的。感谢您的快速回复,这将对我有所帮助。但是在我的例子中,在这个表中,work\u history'id',user\u id',name',work',work\u month',work\u year。如果用户_id=1在2012年10月有记录,但用户_is=2在2012年9月有记录,则此查询仅检索用户_id=1的数据。您在问题中未指定任何与此相关的内容。您应该清楚地表明,您需要问题本身中的每个用户。不管怎样,我再问一次,你的工作月专栏是什么类型的?