0

mysql には、各年の各月の最新の 3 つのレコードを取得する単一のクエリがありますか? または、 Loop を介して行う必要がありますか?

すなわち

YEAR 2011

january 

Record 1
Record 2
Record 3

May 

Record 1
Record 2
Record 3

September 

Record 1
Record 2
Record 3

YEAR 2012

August 

Record 1
Record 2
Record 3

Nov 

Record 1
Record 2
Record 3

Dec 

Record 1
Record 2
Record 3

等々。

ループで達成できると推測していますが、これを達成するためのより良い方法はわかりません。

4

1 に答える 1

1

サンプルアプリケーションを使って試してみてください。必要に応じて命名規則を使用できるように、これを行ったことを覚えておいてください。

最初に以下のようにデータベーステーブルを作成しました。このテーブルに「threemonth」という名前を付けました


id auto_increament,
title varchar 255,
created date

タイトルは、結果が繰り返されないことを確認するためのものです。

次に、1 つの php ファイルを作成し、データベース接続とすべてを行います。

そのページ内のクエリの下にコピーして貼り付けます。


SELECT YEAR(created) as stat_year,
       MONTH(created) as stat_month,
       COUNT(*) as stat_count,
       title,
       GROUP_CONCAT(created) as FinalResult,
       id
FROM
      `threemonth`
GROUP BY stat_year,stat_month
ORDER BY created DESC

上記のクエリは、以下のようなものを出力します。


stat_year = 2012
stat_month = 12
stat_count = 2
FinalResult = comma separated date listing becaue of concating result.
title and id  

レコードを表示するときは、必要に応じて表示してください。

コンマ区切りの作成済みフィールドを展開し、最初の 3 つのレコードのみを表示するだけで完了です。

于 2012-12-05T05:39:28.003 に答える