• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQL:1回で期待するデータの出力をしたい)

SQLで最新のデータを抽出する方法

moousiの回答

  • moousi
  • ベストアンサー率70% (21/30)
回答No.2

select (select id from input_date where name=m.name and date=m.mdate)date ,m.name name ,m.mdate date from (select name,max(date)mdate from input_date group by name)m ;

mmei
質問者

お礼

早々のご回答ありがとうございます。 入れ子をふたつ利用することもできるのですね! しかし、この場合、サーバへの負荷が気になるところです。

関連するQ&A

  • ACCES「抽出条件でデータ型が一致しません」

    環境 WindowsXP Access2003 SELECT A.ID, A.NAME, A.DATE FROM ( (SELECT ID, NAME, DATE FROM ・・・) A LEFT JOIN (SELECT ID, NAME, DATE FROM ・・・) B ON A.ID = B.ID ) ORDER BY A.ID こんな感じのSQLを実行すると、 「抽出条件でデータ型が一致しません」 というエラーとなります。 SQL文を以下の様に変更すると、エラーにはなりません。 1.「ORDER BY A.ID」排除 2.ORDER句を「A.ID」以外の「A.NAME」「A.DATE」「B.ID」「B.NAME」「B.DATE」に変更 3.ON句の順番を「ON B.ID = A.ID」に入れ替え(ORDER句は、「A.ID」のまま) なぜ、このようなエラーになるのでしょうか? 特に3が理解不能なのですが、 ON句の順番がORDER句に影響を及ぼすことがあるのでしょうか? 以上、よろしくお願いします。

  • mysqlのsql文について教えて下さい

    mysqlのsql文について教えて下さい 下記のようなテーブルとデータがあった場合に どうやれば 2,次郎だけを抽出できますか? 本日日付(2010-08-06)が 既にテーブルBにdateが存在する場合は 3,1,2010-08-04 3,1,2010-08-06を 対象外にしたいです。 Aテーブル id,user 1,太郎 2,次郎 3,3郎 Bテーブル targetid,homonid,date(datetime型) 3,1,2010-08-04 3,1,2010-08-06 3,2,2010-08-05 下記だと2010-08-04にヒットしてしまい(当たり前?)動作しません。 select distinct a.* from tblA a, tblB b where date_format(b.date, "%Y-%m-%d") <> "2010-08-06" ;

  • データがあれば○○なければのSQL

    基本的なことなのかもしれませんが・・・ AとBというテーブルがあり、あるタイミングでAを元にBを作成します。つまりBはデータがある場合とない場合があります。また、2つは関連番号で紐づいています。 Aテーブルを抽出したい時に、抽出条件は以下です。 ・Bテーブルのステータスが1であれば抽出 ・Bテーブルのステータスが0であれば非抽出 ・Bテーブルにデータがなければ抽出 INNER JOINだとデータがない時に抽出できないし、 WHERE句にCASE句を入れればいいのかなと思いましたが、テーブルにデータがあればなんて条件書けないしで詰まりました。 SELECTした結果に対して条件つけて抽出する手も思いつきましたが もっと美しいSQLがあれば教えてもらえないでしょうか。 環境はSQLServerです。よろしくお願いします。

  • SQLで日付

    MySQLです。JAVAです。 下記に該当するレコード項目全てを抽出するには、 どのようなSQLを書けばよいでしょうか? 指定日 sitei_date = 2015-07-14 sampleテーブル -------------------- ID name date -------------------- 1 商品A 2015-07-07 1 商品A 2015-07-13 1 商品A 2015-07-14 ・・・ これを抽出したい 1 商品A 2015-09-11 2 商品B 2015-09-10 2 商品B 2015-07-15 2 商品B 2015-07-13 3 商品C 2015-07-07 3 商品C 2015-07-11

    • ベストアンサー
    • MySQL
  • SQLでうまいことビューが作れない

    SQLサーバー2005+マネジメントスタジオでビューを作っています。 以下のデータが存在するときに●のついたデータだけを抽出したいです。 明細IDはユニークとし、明細IDの中で一番日付が新しいものだけを取得したいです。 T-SQLでどのように書けばよいか教えてください。 <データ> 明細ID 日付 111 2010/10/01 111 2010/11/01 111 2010/12/01 ● 222 2010/11/01 ● 333 2010/09/01 333 2010/10/01 ● 444 2010/10/01 444 2010/11/01 444 2010/12/01 ● 555 2010/09/01 ● <出力> 明細ID 日付 111 2010/12/01 ● 222 2010/11/01 ● 333 2010/10/01 ● 444 2010/12/01 ● 555 2010/09/01 ●

  • VB2010のSQLを使ったレコードカウント方法

    VB2010にて他のシステムから出力したCSVファイルにアクセスして集計を行おうとしています。 重複を排除したカウントを得たいのですがうまくいきません。 (1) SQL = "SELECT DISTINCT 物品ID FROM …" だと目的のレコードを抽出できるのですがCOUNTを使って (2) SQL = "SELECT COUNT(DISTINCT 物品ID) AS 物品数 FROM …" とする『演算子がありません』とエラーが出て (3) SQL = "SELECT DISTINCT COUNT(物品ID) AS 物品数 FROM …" とすると値はですのですが(1)のレコード数と違う数が出てきます??? 素人の手探りでプログラミングをしているので動きの違いが分かりません ご教授お願いします。

  • PHPでのデータ表示画面⇒CSV出力について

    先日より質問に対しコメントありがとうございます。 教えていただいた内容と自分でやった結果3つのSQLでデータを出力し出力順を揃えた方法で表ができました。 これをCSV形式で出力したいのですがこのまま出力できるのでしょうか?それとも別途方法をとる必要があるのでしょうか。 自分の中で今ひとつまとまらないので改めて質問させていただきます。 ソースへの指摘併せコメントよろしくお願いします。 ※現ソース <HTML> <BODY> <?PHP //DB接続部省略 $sql="SELECT I.ITEM_ID,I.ITEM_NAME FROM ITEMS AS I,LIST AS L・・・(略)"; $sql2="SELECT A.SHOP_ID,A.SHOP_NAME,A.ITEM_NAME, IF(L.ITEM_ID=A.ITEM_ID,'○','') FROM・・・(略)"; $sql3="SELECT S.SHOP_ID,S.SHOP_NAME FROM SHOP AS S ・・・(略)"; $rs=mysql_query($sql,$db); $rs2=mysql_query($sql2,$db); $rs3=mysql_query($sql3,$db); $line=mysql_num_rows($rs); $line2=mysql_num_rows($rs2); $line3=mysql_num_rows($rs3); print("<TABLE border=1>"); print("<TR>"); print("<TD>店舗名</TD>"); for($i=0;$i<$line;$i++) { $row=mysql_fetch_row($rs); print("<TD>".$row[1]."</TD>"); } print("</TR>"); print("<TR>"); for($i=0;$i<$line3;$i++) { $row3=mysql_fetch_row($rs3); print("<TD>".$row3[2]."</TD>"); for($j=0;$j<$line;$j++) { $row2=mysql_fetch_row($rs2); if($row2[3] == "") { print("<TD width=25> </TD>"); } else { print("<TD width=25>".$row2[3]."</TD>"); } } print("</TR>"); } print("</TABLE>"); mysql_free_result($rs); mysql_free_result($rs2); mysql_free_result($rs3); mysql_close($db); ?> </BODY> </HTNL>

    • ベストアンサー
    • PHP
  • エクセルでSQL文を自動で出力させたい

    INSERT INTO `TableInfo` ( `author_id` , `name` , `no` , `addr` ) VALUES ('其一', '其二', '其三', '其四'); 上記のようなテーブルがありINSERTでデータを登録させていきたいと思っています。 そこで、エクセルに打ち込んだデータを、 '其一' '其二' '其三' '其四' に置き換えてSQL文としてテキストファイル等に出力させたいと思います。 エクセルはあまり得意ではなくどうやれば良いか判りません。 どなたか御教授お願い致します。

  • データの検索の為に列を増やすのは正しいのか

    現在mySQLの勉強中です。 テーブルtableにidとnameとunixtimeが格納されています。 登録件数30000件。idは、登録申請時に順に割り振られています。 unixtimeはnameに対応する人間の登録確定時を表したものです。 したがって、idとunixtimeの順番は必ずしも一致しません このデータから、PHPを使って登録確定日別でid、nameのリストをhtmlで作成したいと思います。 たとえば20001224.htmlには2000年12月24日に登録確定した人のリストが入っているようにしたいです。 このような出力を効率的に行うために、unixtimeからyearとmonthとdateを作成しました。データ型はすべてintです。 あるデータのunixtimeが2011/12/31の場合、yearは2011、monthは12、dateは31となります。 htmlを作成するにあたり、データベースからデータを出力しなければいけません。そのため、 まずdateが条件に一致するデータを抽出して配列にidとmonthとyearを格納し、 次にmonthが条件に一致するものを抽出して配列にidとyearに格納し、 最後にyearが一致するデータのidを抽出し、idに該当するデータをechoしようと考えています。 が、この方法は正しいのでしょうか。 SQLは検索にいろいろテクニックが必要で、方法を誤ると途端に検索速度が速くなったり遅くなったりすると聞きました。 列を増やすことで、メモリの使用量が増えて検索が遅くなったり、もしかしたらunixtimeで上手に検索する方法があるのかもしれないと思います。 どなたかこういう時はどういう検索を行うのが正しいのか、ご教示ください。 どうかよろしくお願いします。

    • ベストアンサー
    • MySQL
  • phpでのSQLでのデータの追加方法

    phpでのSQL実行に関して、下記のデータを追加するコードがあります。 mysql_query('INSERT INTO my_items SET maker_id=1, item_name="もも", price=210, keyword="缶詰,ピンク,甘い", sales=0, created="2010-08-01", modified="2010-08-01"') or die(mysql_error()); echo 'データを挿入しました'; 私は。それを INSERT INTO (フィールド名) VALUES(値) のSQL文で実行したいのですが、その方法が分かりません。 よろしければ、それを実行するコードを教えてください。お願いします。

    • ベストアンサー
    • PHP