• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MySQL データ取り出しについて)

MySQLデータ取り出しの方法とは?

このQ&Aのポイント
  • MySQLデータ取り出しに関する基本的な方法として、特定の条件に基づいてデータを抽出するクエリを使用します。
  • 上記の例では、noとdateの2つの列があります。特定のnoに関連する最新のdateを取得するには、以下のクエリを使用します。
  • 知り合いからは1件ずつ取り出すのは可能だがまとめては無理だと言われました。しかし、MySQLでは条件に基づいてデータを絞り込み、必要なデータのみを一度に取り出すことができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • root139
  • ベストアンサー率60% (488/809)
回答No.3

> 仮にmesという列を追加して・・・の抜き出しは可能なのでしょうか? 相関サブクエリを使えば出来ます。 ただし、同じ no で最新の日付の行が複数有った場合は、複数取出されます。 例) ------------------------------------------- SELECT * FROM sample2 a where NOT EXISTS( SELECT * FROM sample2 b WHERE a.no = b.no AND a.date < b.date ); ----------------------------------------------- WHERE 句は、 no が同じで date がそれより大きい行が無い行という条件を表しています。

参考URL:
http://codezine.jp/article/detail/460
4822
質問者

お礼

回答有難う御座います。 「素晴らしい」以外の言葉が見つかりません。

その他の回答 (2)

  • root139
  • ベストアンサー率60% (488/809)
回答No.2

no ごとに最も新しい日付の date を取得するということでよいでしょうか? GROUP BY 句で同一の no のレコードをまとめ、MAX で最も新しい日付を取得することが出来ます。 例) ----------------------------------------- SELECT no, MAX(date) FROM sample1 GROUP BY no; --------------------------------------------

4822
質問者

お礼

回答有難うございます。 SQL文一回でnoごとのdateの最新日を抜き出すことが出来ました。^^

4822
質問者

補足

仮にmesという列を追加して -------------------- |no| mes | date | -------------------- |1 |コメントA| 2011/1/25 | -------------------- |1 |コメントB| 2011/1/28 | |-------------------- |1 |コメントC| 2011/1/29 | |-------------------- |2 |コメントD| 2011/1/25 | |-------------------- |2 |コメントE| 2011/1/28 | |-------------------- 取り出したいデータ -------------------- |no| mes | date | -------------------- |1 |コメントC| 2011/1/29 | -------------------- |2 |コメントE| 2011/1/28 | |-------------------- の抜き出しは可能なのでしょうか? 先程のSQL文でいくと -------------------- |no| mes | date | -------------------- |1 |コメントA| 2011/1/29 | -------------------- |2 |コメントD| 2011/1/28 | |-------------------- コメントだけ古い状態のものになってしまいました。

  • rukuku
  • ベストアンサー率42% (401/933)
回答No.1

こんばんは 補足要求です。 MySQL単独での方法は私にも思いつきません。 PHPなどからMySQLに指示を出している場合には可能です。 実際に使っている環境(パソコン上なのかWeb上なのか、OSは何かなど)と教えてください。 また、 >noは動的(3,4,5・・・) 連番なのか、欠番があるのかなど、番号の付け方のルールも教えてください

4822
質問者

お礼

回答有難うございます。 MySQLのみでいけるか、もうちょっと粘ってみようかと思います^^;

4822
質問者

補足

長文にて失礼します。 補足です。 環境 --------------- PHP 5.2.8 Apache/2.2.11 MySQL 5.1.32-community Windows Vista Home Basic --------------- 2chのような掲示板を想像してみて下さい。 スレッドが立てられるとtb1のnoが連番で増えていきます。 tb1テーブル ---------- |no| thread | |---------- |1 |スレッドA| |---------- |2 |スレッドB| |---------- tb2テーブル -------------------- |no| mes | date | -------------------- |1 |コメントA| 2011/1/25 | -------------------- |1 |コメントB| 2011/1/28 | |-------------------- |1 |コメントC| 2011/1/29 | |-------------------- |2 |コメントD| 2011/1/25 | |-------------------- |2 |コメントE| 2011/1/28 | |-------------------- 取りあえずtb1は無視してローカル環境にてtb2だけで色々と試し select no,max(date) from tb2 group by no; と叩いたところ、 -------------- |no | date | -------------- |1 | 2011/1/29 | -------------- |2 | 2011/1/28 | ------------- と出たのですが、mesを加えると -------------------- |no| mes | date | -------------------- |1 |コメントA| 2011/1/29| -------------------- |2 |コメントD| 2011/1/28 | |-------------------- mesだけは古いままで終わってしまいました。^^; 出来れば1回のSQL文で出してmysql_fetch_array()を使用してwhile文で回そうかなと考えています。

関連するQ&A