1

テーブル work_history('id','name','work','work_month','work_year') があります。

現在の当月のデータへのクエリが必要ですが、当月のデータが存在しない場合、この場合は先月のデータを取得するなど...それまでデータが見つかりません。たとえば、2012 年 11 月のデータが見つかった場合は、このデータのみを取得します。前月を確認する必要はありませんが、見つからない場合は、先月の 2012 年 10 月を確認します。それでも見つからない場合は、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 に答える