MySQLのSELECT文について質問です。

下記のようなテーブルがあったとして、各月の一番最初のidを取り出すにはどんなSELECT文が適切でしょうか。

date | id
2009-01-01 | 100
2009-01-03 | 99
2008-12-01 | 98
2008-12-02 | 97
2008-11-01 | 96
2008-11-02 | 95

以上、よろしくお願いいたします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2009/02/13 22:43:34
  • 終了:2009/02/14 10:19:58

ベストアンサー

id:chuken_kenkou No.1

chuken_kenkou回答回数722ベストアンサー獲得回数542009/02/13 22:59:13

ポイント56pt

MySQLの質問をする場合、バージョンを明記してください。


  • MySQL 4.0以前・・・一部のジョイン、union、一時表などは実装済
  • MySQL 4.1・・・ジョインの拡張、サブクエリ、unicodeなどの実装
  • MySQL 5.0・・・ビュー、ストアドプロシジャ、トリガなどの実装

と、バージョンにより機能が大きく違い、実装方法が異なってきます。


各列のデータ型も、明示してください。date型なのか、varcharなどなのかにより、利用できる機能が違ってきます。


母体データ、得たい結果も、明示してください。

「一番最初」といった概念は、システムによって違ってきます。


また、年月などを抽出し、それをその後、条件式などに活用したいのかどうか、ただ単に表示せきればいいのかといったことで、使うべき関数やクエリも違ってきます。


提示された条件から、最低限にできそうなSQLを提示しておきます。


select
  date_format(`date`,'%Y%m') as yyyymm,
  min(id)
 from t1
 group by yyyymm

MySQL :: MySQL 4.1 リファレンスマニュアル :: 6.3.4 日付と時刻関数

id:n_maco2

ご指摘ありがとうございます。

すみません、説明不足すぎました。

提示いただいたSQL文で私の要件としても達成できそうな感じです。

再度必要になった際には改めて要件を明確にして質問させていただきます。

ありがとうございました〜

2009/02/14 10:18:30

その他の回答(1件)

id:chuken_kenkou No.1

chuken_kenkou回答回数722ベストアンサー獲得回数542009/02/13 22:59:13ここでベストアンサー

ポイント56pt

MySQLの質問をする場合、バージョンを明記してください。


  • MySQL 4.0以前・・・一部のジョイン、union、一時表などは実装済
  • MySQL 4.1・・・ジョインの拡張、サブクエリ、unicodeなどの実装
  • MySQL 5.0・・・ビュー、ストアドプロシジャ、トリガなどの実装

と、バージョンにより機能が大きく違い、実装方法が異なってきます。


各列のデータ型も、明示してください。date型なのか、varcharなどなのかにより、利用できる機能が違ってきます。


母体データ、得たい結果も、明示してください。

「一番最初」といった概念は、システムによって違ってきます。


また、年月などを抽出し、それをその後、条件式などに活用したいのかどうか、ただ単に表示せきればいいのかといったことで、使うべき関数やクエリも違ってきます。


提示された条件から、最低限にできそうなSQLを提示しておきます。


select
  date_format(`date`,'%Y%m') as yyyymm,
  min(id)
 from t1
 group by yyyymm

MySQL :: MySQL 4.1 リファレンスマニュアル :: 6.3.4 日付と時刻関数

id:n_maco2

ご指摘ありがとうございます。

すみません、説明不足すぎました。

提示いただいたSQL文で私の要件としても達成できそうな感じです。

再度必要になった際には改めて要件を明確にして質問させていただきます。

ありがとうございました〜

2009/02/14 10:18:30
id:pahoo No.2

pahoo回答回数5960ベストアンサー獲得回数6332009/02/14 00:27:49

ポイント14pt

要件が分からなかったので、以下に2通りの回答を書きます。

各月の1日の id を取り出す

select id from c where date like '%-01%' order by date asc;

ある月の最初の日の id を取り出す

select id from c where date like '%-01-%' order by date asc limit 0,1;

※上は1月の場合です。他の月の場合は、like '%-01-%' の部分を月に合わせて変更してください。


参考サイト

id:n_maco2

ご回答ありがとうございました

質問がわかりにくくて申し訳ございません。

先にご回答いただいた方のSQLで対応できそうでした。

お手数をおかけいたしました

2009/02/14 10:19:32

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません