• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:直近のデータのリストを取得したい)

直近のデータのリストを取得する方法

このQ&Aのポイント
  • Mysqlのバージョン5.6.14の環境で、指定条件に基づいてデータのリストを取得する方法について教えてください。
  • 特定の条件に一致するデータを抽出し、直近のjuchuuのグループのリストを取得する方法について、Mysqlのバージョン5.6.14での実行手順を教えてください。
  • Mysqlのバージョン5.6.14を使用して、指定条件に一致するデータを抽出し、直近のjuchuuのグループのリストを取得するための構文を教えてください。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.4

>starttimeが2番目に大きいもの ちょっと特殊になりますがこんな感じ select * from tbl where (juchuu,keisiki) in (select juchuu,t2.keisiki from tbl as t2 inner join (select starttime,keisiki from tbl where keisiki=7745 order by starttime desc limit 1,1) as t3 on t2.starttime=t3.starttime and t2.keisiki=t3.keisiki) ここでlimit 1,1の前の「1」が2番目に大きいという意味 つまりn番目に大きいものを含むはlimit n-1,1とする 1番大きいのはlimit 0,1でもいいが、maxを使った方がらく keisikiごとに同じstarttimeがあるとは想定していません 同じものがある場合はさらに順位をつけるロジックが必要になるので

kenken9000
質問者

お礼

ありがとうございます。できました。 お返事遅くなり申し訳ありませんでした。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

なるほど、そうなるとこんな感じ? //元データ create table tbl(juchuu int,keisiki int, starttime datetime,koutei int); insert into tbl values(8830,7745,'2013-12-1 14:24',1010),(8830,7745,'2013-12-02 08:30',1020),(8835,7720,'2013-12-03 15:20',1010),(8840,7745,'2014-01-01 08:30',1010),(8840,7745,'2014-01-01 13:30',1020); //結果 select * from tbl where (juchuu,keisiki) in (select juchuu,keisiki from tbl where (starttime,keisiki) in (select max(starttime),keisiki from tbl where keisiki=7745));

kenken9000
質問者

補足

ありがとうございます!できました。 3たびで申し訳ないのですが、starttimeが2番目に大きいものを含むリストを抽出だとどうなりますでしょうか。

全文を見る
すると、全ての回答が全文表示されます。
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>直近のjuchuuのグループのリスト 「直近」の定義があいまいです juchuuが最大のものを意味するなら#1さんの通りですが starttimeが最大のものを含むjuchuu全てとなると話は別です。 またstarttimeが同じものが出たときに複数のjuchuuを抜き出すのかどうかも 決めておく必要があります なお最後に投入したデータという意味でしたら 投入日やauto_incrementを設定したカラムが必要です 見た目上selectで表示される最終行は「必ずしも」直近のデータだとは限りません

kenken9000
質問者

補足

ご回答ありがとうございます。 書き方も悪かったので、補足で説明させていただきます。 第一希望としては、keishikiが7745、かつ、starttimeが最大(直近)のものを含むリストを抽出したいと考えています。 第二希望として、keishikiが7745、かつ、juchuuが最大値のリストの抽出です。 度々申し訳ありませんが、よろしくお願いいたします。

全文を見る
すると、全ての回答が全文表示されます。
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

・keishiki=7745 のデータ Select * from table where keishiki=7745; ・直近のjuchuuのグループのリスト(4行目と5行目のリスト) select * from table where juchuu = (select max(juchuu) from table) ;

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 直近データ抽出 VS WHERE文

    お世話になっております。 PHPにてMySQLのデータを取得するスクリプトを制作しています。 (MySQL5) 日付データ(DATE型)カラムを持つテーブルがあり、現在から直近日を取得したとき、そのデータが現在より1ヵ月以内のデータであるか否かを分別したいと考えています。 そこでお聞きしたいのは、データを参照する際、MAX()にて直近日を取得し、そのデータが1ヵ月以内であるか確認するパターンと、max()を使わず、WHERE(条件)にて、1ヵ月以内に収まる日付データがあるか確認しるパターンと、どちらが処理が速く済むのでしょうか? 他の処理を行うための条件なので、これら処理によりデータを取得する必要はなく、該当する日付があるか否か、という確認だけのものです。 お忙しいなか恐縮ですが、アドバイスのほど頂戴出来れば幸いです。 宜しくお願い致します。

    • ベストアンサー
    • MySQL
  • SQLの2行取得

    こんばんは PHP+MySQLで1月~12月までのテーブルがあるのですが 1行目から12月のデータを1行目から1月のデータを取得して 並べて表示したいのですが、どういうコードを書けばいいか すみませんが、教えてください。 お願いします。

  • MySQLから列を取得し、リストボックスを作成したいです

    MySQLから1つの列を、例えば10行あれば10個のデータ(文字列)を取得したいのですが、取り出し方が分かりません。データベースへの接続・切断の仕方やSQLの事は分かっています。 したい事は、該当するページから、はじめはリストボックスには、何も(option value="")入ってなくて、MySQLより文字列を取得、取得した文字列をoption valueに順番に10個表示させたいです。 どうかよろしくお願い致します。

  • PHPでMySQLに登録されているデータのMAXと他のフィールドからデータの取得

    PHPでMySQLの最新のデータを取得し、そのデータのデータ番号を取得しようとしています。 テーブルは ID(INT型、AUTO_INCREMINT) | name(VARCHAR型) | t_touroku(DATATIME型) 1 | test1 | 2005-12-1 12:11:10 2 | TEST2 | 2005-12-2 12:56:10 となっています。 ここから最新のデータt_tourokuを検索しそのデータのIDを取得したいのですが、どうにもうまいことできません。 この場合ですと、IDの2を取りたいんです・・・。 MAXを使えばいけると思ったのですが、最新のデータしか取得できずIDを取得できませんでした・・・。 どうか、お知恵を貸して下さい。 よろしくお願いします。 バージョンは PHP 4.3.10 MySQL 3.23.58 です。

    • ベストアンサー
    • PHP
  • 結合した場合の取得時間差について

    ちょっと抽象的ですいませんが、 100万件のデータがあるテーブルAからインデックスを利用して1万件のデータを取得する場合と、 80万件のデータがあるテーブルAと1000件のデータがあるテーブルBを結合して、インデックスを利用して1万件のデータを取得する(WHERE区の>=,<=とGROUP BYを使用) 場合だと明らかに前者の方が速いとは思いますが、実際の取得時間の差はどれくらいあるでしょうか? 何を教えてもらいたいかと言うと、上記の場合、テーブルAの80万件は別テーブルのデータから作られており、残りの20万件はテーブルAとテーブルBから作ることができるので(80万件をあるKEYでSUMしたもの)、 2つの方法でのデータ取得の差があまりない、あるいはかなり小さくできるのなら、後者の方法を取りたいのです。 (INSERT,UPDATEを無駄にしたくない) 説明がわかりづらくてすいませんが、アドバイスをお願いします。

  • 2件目のデータを取得する

    お世話になります。 データベース:SQLSERVER2005 テーブル名:URIAGE_TABLE 項目:URIAGE_CODE、URIAGE_DATE、URIAGE_KINGAKU 上記テーブルの、2件目のデータのみを取得 するSQL文をを知っている方いますか? どうぞ宜しくお願いします。

  • mysql+php リストボックスについて

    リストボックスを使ってmysqlのテーブルから データを得たデータをテキストボックスに入れる方法で悩んでいます。 やりたいことはこんな感じです。 [商品A▼]←リストボックス リストボックスの内容は               データベースより取得 [230 ]円←テキストボックス mysqlテーブル 商品  値段 商品A 230 商品B 460 商品Aを選ぶと自動的にテキストボックスに値段が 入るようにしたいのですが・・リストボックスの データを拾ってくることはできるのですが、テキスト ボックスに入力することができません。やり方を ご教授お願いします。

  • ACCESS97でSQLを使用して全データを順に取得したい

    ACCESS97を使用しています。 あるテーブルAの全データをモジュールを組んで textファイルへ出力したいのです。 1行ずつ取得して 1行ずつ出力する方法でやっています。  この時、1行ずつ取得したいのですが  strSQL = "SELECT * FROM テーブルA ;"  上記内容だと全件取得してしまいます。  1行ずつ 取得する方法はないのでしょうか?  例えば  strSQL = "SELECT * FROM テーブルA WHERE 1行目;"  又は、全件 textファイルに出力するモジュールあるのでしょうか?

  • MySQLで格納されたデータを取得したい!

    MySQLで格納されたデータを取得した際に メンバを取得するにはどうしたらいいですか? 御存じの方、教えて下さい!お願いします! MySQL ------------------------------- 食品 | 材料 | 数量 | ------------------------------- 食品(1) | 材料(1) | 数量(1) ------------------------------ 食品(2) | 材料(2) | 数量(2) ----------------------------- 上記のようにでーたベースに格納してる場合に 数量(2)を知りたい場合はどのようにするのでしょうか? 取得でできた(数量(2))を構造体に格納したいのです。 現在は、mysql_query(host,"select ~"); して、mysql_store_result(); してサーバからデータを抽出した状態で 参照したい行の何列目かを知りたい場合の方法がどうしたらいいのかわかりません。 ちなみに mysql_fetch_row()を使用する場合だったら ポインタのポインタって考えればよいのですか? よろしく御教授お願いいたします!

  • データの取得方法

    いつもお世話になっております。 MySQLとPHPで開発をしております。 以下のような2つのテーブルがあります。 テーブル:Order(キー:OrderNo,OrderSubNo) OrderNo|OrderSubNo|yen |・・・・| 1 |1 |1000|・・・・| 1 |2 |1050|・・・・| 2 |1 |2000|・・・・| 3 |1 |980 |・・・・| 3 |2 |525 |・・・・| 3 |3 |2500|・・・・| テーブル:mOrder(キー:OrderNo,OrderSubNo) OrderNo|OrderSubNo| 1 |1 | 2 |1 | 3 |2 | 3 |3 | mOrder にあるデータは表示しないようなクエリを発行したいと 思っております。 取得したいデータは以下のようになります。 OrderNo|OrderSubNo|yen |・・・・| 1 |2 |1050|・・・・| 3 |1 |980 |・・・・| 何か方法はありますでしょうか。 よろしくご教示お願いいたします。 <環境> MySQL:3.23.58

    • ベストアンサー
    • MySQL