• ベストアンサー

ソート順の一番若い者を取得する

お世話になります。 Oracle SQL文で質問があります 以下のようなテーブルから【結果】のような レコードを取得したいのです id id2 が同じものでsort順が一番若いものを 取り出すSQLです。 おわかりの方よろしくお願いします。 id id2 sort 1 1 1 1 1 2 1 2 1 1 2 2 1 2 3 1 3 1 【結果】 id id2 sort 1 1 1 1 2 1 1 3 1

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

  • ベストアンサー
  • kyo_seven
  • ベストアンサー率30% (7/23)
回答No.2

例のテーブルから結果にするには SELECT ID, ID2, MIN(SORT) FROM TABLE_NAME GROUP BY ID, ID2 ですね。

takataka111
質問者

お礼

ありがとうございます、わざわざ補足までして頂いて 皆様に頂いた知恵を使わせていただきました。 ありがとうございます。

その他の回答 (2)

  • junijuni
  • ベストアンサー率25% (12/48)
回答No.3

#1です WHERE ID = ID2 はいらないですね。 失礼しました。とほほ。

takataka111
質問者

補足

ありがとうございます、わざわざ補足までして頂いて 皆様に頂いた知恵を使わせていただきました。 ありがとうございます。

  • junijuni
  • ベストアンサー率25% (12/48)
回答No.1

SELECT ID, ID2, MIN(SORT) FROM TABLE_NAME WHERE ID = ID2 GROUP BY ID, ID2 これでだめだっけ?

関連するQ&A

  • レコードを指定項目の数値分取得する

    OracleのSQL文について質問させて頂きます。 以下のようなテーブルが存在するとします。 ID  品名  個数 001 みかん 1 002 りんご 2 003 ぶどう 2 このテーブルから、以下のような結果を取得したいのです。 ID  品名  個数 001 みかん 1 002 りんご 2 002 りんご 2 003 ぶどう 2 003 ぶどう 2 個数の数だけレコードを返す形です。 どういうSQLを組めばよいのか、わかりません。 お手数ですが、どなたかわかる方いらっしゃいましたら ご回答頂けますと幸いです。よろしくお願い致します。

  • 条件付ソートについて

    SQL文で条件付のソートについて教えてください。 テーブルA(id, data_a, data_b)があったとき、 data_aとdata_bのうち、値が大きいほうのデータでソートするためのSQL文が知りたいのです。 例えば以下のようなデータが入っていたとき、 id,date_a,date_b 1, 10, 0 2, 20, 40 3, 30, 30 4, 90, 15 以下のような結果になるようにソートしたいのです。 id,date_a,date_b 1, 10, 0 3, 30, 30 2, 20, 40 4, 90, 15 良い方法があれば教えてください。 よろしくお願いします。

  • 1回のSQLで集計結果順にソートする方法を教えてください

    PHP4+MySQLです。 やりたいことがあるのですが、いいSQLが考えつきません。 お知恵を拝借できれば幸いです。 以下のようなテーブルがあるとします。 ID|ITEMid|DATE 1| 232|2009-06-14 2| 156|2009-06-14 3| 156|2009-06-14 4| 232|2009-06-14 5| 232|2009-06-14 6| 567|2009-06-14 これを次のように集計したいのです。 (ITEMidの登場回数順にソートして、実際の回数も出す) 232:3 156:2 567:1 サブクエリの使えない環境で、1回のSQLで集計することはできるでしょうか。できる場合実際のSQL文を教えていただければ幸いです。 テンポラリテーブル使えば自分でもできそうな気がするので、できれば使わない想定でお願いします。

    • ベストアンサー
    • MySQL
  • GROUP BYで集約されるときのソートを変えたい

    GROUP BYで集約されるときのソートを変えたい MySQLの5.1を使用しています。 テーブル"tbl"には、"no","id","score"の3つのフィールドがあり、 "no"は主キーです。 +---+----+-------+ | no | id | score | +---+----+-------+ | 1 | 10 | 10002 | | 2 | 10 | 10000 | | 3 | 10 | 10008 | | 4 | 11 | 10004 | | 5 | 12 | 10006 | +---+----+-------+ 上記の表から、 scoreの値が高い順にグループ化してソートしたいのですが、 以下のSQL文ではscoreが最初に登録されたものに集約されてからグループ化されてソートしてしまうため、 思い通りの結果が得られずに困っています。 ↓具体例 SELECT no, id, score FROM tbl ORDER BY score DESC GROUP BY id; +---+----+-------+ | no | id | score | +---+----+-------+ | 5 | 12 | 10006 | | 4 | 11 | 10004 | | 1 | 10 | 10002 | +---+----+-------+ ↓欲しいソート順 +---+----+-------+ | no | id | score | +---+----+-------+ | 3 | 10 | 10008 | | 5 | 12 | 10006 | | 4 | 11 | 10004 | +---+----+-------+ テンポラリテーブルはなるべく使用せずソートしたいのですが、 このような事は可能なのでしょうか? ご存知の方がいらっしゃいましたら教えていただけると助かります。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • SQL-SELECT文でのソート

    VB2010とmdb(Ms-Access)にてシステムを構築しています。 Select文にて取得したレコードをDatagridviewにて表示しようとしているのですが SQL="SELECT * FROM table ORDER BY ID" 当のシンプルなものだと表示できるのですが 特定の文字列順にソートしたくCASE WHENを使用して SQL = "SELECT * FROM table ORDER BY CASE BUPPIN WHEN '○○' THEN 1 WHEN '△△' THEN 2 ELSE 0 END" のようにSQLを書いてみたのですがデータアタプタにてデータテーブルに結果を入力させる際にエラーが出てしまいます。 構文間違いでしょうか? ご教授お願いします

  • DB内データのソート

     SQLServer2000を使って1週間の初心者です。  現在、ExcelからDBに対して数万件単位でデータをインポートしています。(DTSインポートウィザード使用)  インポート後、Enterpriseマネージャにてデータを見ると、ExcelとDBとの行の位置が異なっています。  (例)2万件を2回インポートした場合   ID_000001 ・ ・   ID_020000   ID_020059 ・ ・   ID_040000 ※ID_020001~ID_020058は、ID_020000以前のレコードの間に存在したりします。  一意である「ID_??????」行でSQL文ソート(ORDER BY)して見た目をExcelと同様の行順にしても、EnterPriseManagerでテーブルを閉じ、再度テーブルを開いたら以前のデータのままです。  ソート状態を上書き保存するようなことはできないでしょうか?  また、Excelと同じ行順でインポートする方法はないでしょうか?

  • 2つのテーブルでの合計取得

    環境:Mysql4.1.19 次のようなAテーブルとBテーブルのキーごとのレコードカウントを取得したいのですが、どのようなSQL文を作ればよいのでしょうか? Aテーブル ID Hiduke 005 2006-10-1 006 2006-10-3 001 2006-10-1 005 2006-10-6 005 2006-10-1 Bテーブル ID Hiduke 006 2006-11-1 006 2006-11-3 001 2006-11-1 003 2006-11-6 005 2006-11-1 から、次のような結果を得たい。 005 4 006 3 001 2 003 1 以上です。初心者ですが、よろしくお願いします。

    • ベストアンサー
    • MySQL
  • TIMESTAMP型が含まれるテーブルの列名の取得

    Oracle 11gを使用しているSQL初心者です。 テーブルの列名を取得する方法についての質問です。 テーブルの列名を取得するときは以下のSQLで取れると思っています。 select column_name from user_tab_columns where table_name = 'テーブル名'; --実行結果-- COLUMN_NAME ------------------------------ NAME1 NAME2 しかし、テーブルにTIMESTAMP型が含まれていると 「レコードが選択されませんでした。」 と表示されます。 TIMESTAMP型が含まれるテーブルは上記のSQLでは取得できないのでしょうか。 TIMESTAMP型が含まれるテーブルの列名の取得方法をご存知の方がいらっしゃいましたら、 ご教示ください。よろしくお願い致します。

  • 一つのSQL文で取得したい

    こんにちは。 テーブルAに以下のようなデータがあるとします。 ID |名称 |項目 -------------- 01 |ああ | 02 |いい | 03 |うう |01,02 04 |ええ |01 SELECT文で取得したいのは、フィールド「項目」の値を、他のレコードの名称で置き換えた列です。 つまり、 ID |名称 |項目 |項目名称 ------------------ 01 |ああ | | 02 |いい | | 03 |うう |01,02 |ああ,いい 03 |ええ |01 |ああ という結果が欲しいということです。 「項目」の値はカンマで区切られています。 これを一つのSQLで取得したいと思っています(テーブルの結合、サブクエリーはOK)が、方法がわかりません。 どなたかどうぞご教授ください。 よろしくお願い致します。

  • SQLによる"あいうえお"順でソートする表記方法とは?

    VBでSQLを使用するのですが、 とあるリストをあいうえお順で取得したいのです。 SQLによる"あいうえお"順でソートする表記方法とはどのようにすればよいのでしょうか?