• ベストアンサー

該当するSQL文を教えてください。

該当するSQL文を教えてください。 SQL超初心者です。 指定した条件にマッチする「次のレコード」を取得(または表示)させるための SQL文を教えてください。

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

  • ベストアンサー
  • yamada404
  • ベストアンサー率56% (9/16)
回答No.4

次のレコード で想像するのは 最新の値と前回値 の様なデータですが、SQLでやる場合は一意なIDがあるテーブルであれば 以下の様なやり方で表示出来ると思います。 逆の考え方であれば、MAX → MIN に置き換えれば良いと思います。 select * from テーブル as A where A.ID = ( select MAX(B.ID) from テーブル as B where B.ID != ( select MAX(C.ID) from テーブル as C ) ) 日時でと言う事であれば (日時が一意である事が前提ですが) IDで記述している部分を日時のフィールドに変更する事で取得可能かと思います。

tatsukawa3
質問者

お礼

とても助かりました。ありがとうございました。

その他の回答 (3)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.3

次というからには 並べ替えしていると思います。 例えば 1 2 3 4 5 6 7 で=3が条件で その次が欲しい時 1 2 3 4 5 6 7 # と#が条件一致です。 4以上の先頭ということ で成り立つことあります。 1 2 3 4 5 6 7 で奇数の次が欲しい時 1 2 3 4 5 6 7 # # # # と#が条件一致です。 これも偶数の条件の先頭。 指定する条件の裏返し条件での先頭、でできたらと思います。先頭はTOPを使います。

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

ポイントだけ・・・ (1)データにユニークなidを数値でつける (2)数値の大小で順序を判断する (3)空き番があることを加味して、自分よりidが小さい数を数えて、その数に1をたして数が 自分よりidが小さい数と等しいものを抽出する という流れが基本です

  • webuser
  • ベストアンサー率33% (372/1120)
回答No.1

>指定した条件にマッチする「次のレコード」を取得 「次のレコード」は、DBMSの仕様や、条件やデータ状態によって変わりますので無理です。 「次」の根拠が無いからです。 指定した条件、および指定した並び順に複数マッチするレコードのうち、任意の1レコードを選択した後、その次のレコードを取得する事なら可能です。 カーソルオープン時に条件と並び順を指定し、フェッチでデータを1件取得、もう一度フェッチすれば次のレコードを取得できます。 そういう意味では、無条件でテーブルまるごと対象にカーソルオープンし、 フェッチでデータを1件づつ順に取得し、 条件にマッチしたら、最後にもう一回フェッチして、それで取得したのが次のレコードですが、そんなレコードに何の意味もありません。

関連するQ&A

  • SQL文の書き方

    SQLを勉強しています。 レコードの中で指定フィールドの文字列が、指定文字から始まるレコードを取り出したいのですがSQL文の書き方がわかりません。 例) 1, AAA 2, BBB 3, CCC 4, ABC 上記の4つのレコードから"A"から始まるレコードを取り出したい。 結果は[1, AAA]と[4, ABC]が欲しいのです。

  • SQL文がわかんないっす…

    レコードを抽出するためのSQL文を教えてください。 テーブルは下記の通りです。 goodsID, stockNum, reservNum, date 1, 5, 4, 2008-11-4 2, 5, 3, 2008-11-4 2, 5, 2, 2008-11-5 :以下続く : で、2008年11月4日と、2008年11月5日の、(stockNum - reservNum) が両方とも2以上のgoodsID、つまり2を取得したいのです。 また、もし3以上と指定した場合は取得結果を空にしたいです(3つ目のレコードだけが取れると困ります)。 日付の範囲は可変です。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • 重複データをカウントするのに便利なSQL文

    phpで検索結果画面の制作を勉強中です。 pdoでmysqlデータベースに接続しています。 添付画像のように、 重複しているデータをひとつにまとめ、それぞれの重複数を取得するようなSQL文はないでしょうか? ちなみにできれば、添付画像のように、 フォームで入力されたテキストをもとに、 WHERE文でカラム名をあいまい検索をした上で 該当する重複レコードのカラム名を1つだけ表示し、その横に重複数を表示したいです。 フォームのテキストをもとにあいまい検索をする方法は理解しておりますので、 該当する重複レコードのカラム名を1つだけを取得し、その重複数も取得できるようなSQL文があれば教えていただきたいです。 色々と試しては見たのですが、中々上手くいかずに悩んでいます。 ご回答、よろしくお願いします。

    • ベストアンサー
    • PHP
  • SQL文を教えてください

    A B C --------- 11 22 33 44 55 33 上記のように、同じ値を持つレコードが2件以上あるC列の値を取得するにはどのようなSQL文にすればよいでしょうか。 よろしくお願いします。

  • SQLDataSourceのSQL文を変えて・・・

    ASP.Net にて日々壁が立ち上がっております。 GridView のデータソースであるSQLDataSourceのSQL文を変更し、尚且つページング、ソーティングも行いたいと思うのですが、なかなかうまく行きません。 Dim SQL As String 条件が複雑なので、SQL には自作したSQL文が入っております。 Me.SqlDataSource.SelectCommand = SQL Me.SqlDataSource.DataBind() このように記述するとGridViewのデータはSQL文に指定した通りに表示されるのですが、ページング、ソーティングを行うと、元々SqlDataSourceに指定してあるSQL文のモノが適応されて表示画面も元データの適応になってしまいます。 何かのサイトでこういう場合は DataSourceID をどうにかすると、ページング、ソーティングともに指定したSQL文のデータソース上で行われるみたいなことが書かれていたのですが、どう記述してよいかわかりません。 例えば・・・ Me.GridView.DataSourceID = "" Me.GridView1.DataBind() Me.GridView1.DataSourceID = Me.SqlDataSource.ID Me.GridView1.DataBind() こんな記述をしてみても、ページング、ソーティングはうまく動作しません。 動的なSQL文をGridViewに適応でき、ソーティング、ページングも適応させるにはどうしたらよいでしょうか? GridView にそういう事が簡単にできれば非常に使い勝手が良いのですが、 初心者的な考えなのかもしれませんが、何卒ご教授いただければと存じます。 よろしくお願い申し上げます。

  • ORACLEでのSQL、シンプルな方法は?

    ORACLEでのSQL文について質問です。 SQLで条件に合うレコードがあるかどうかはどう判別するのでしょうか? 画面で2つの条件を選んで テーブル ・ステータス ・フラグ 条件に合うレコードがなければINSERT 条件に合うレコードがあればUPDATE レコードが元々あるが、画面で指定された条件から外れる場合はDELETE としたいのですが、うまくSQLが書けません。 レコードがあればupdate、なければinsertするというのは多いのですが。 何かシンプルな方法はないでしょうか。

  • (2)-SQL文の書き方を教えてください。

    table項目:名称、日付、数量。 以上のtabelから以下のクエリーをつくりたいです: クエリー項目:名称、当日数量、当月数量。 日付の値は、フォーム上で指定する。 具体的に:フォーム上日付欄に2003/10/01と2003/10/30を指定し、実行すると、当日数量は、2003/10/30その日の合計数が出る。当月数量に指定された10/01から10/30までの数字の合計がでる。 今、片方だけ条件のSQL文を書けるですが、二つ条件のSQL文がとても難しい。 そうゆうSQL文を教えていただけませんか? よろしくお願いいたします。

  • タイムスタンプ型を抽出条件に指定した場合のSQL

    タイムスタンプ型を抽出条件に指定した場合、どの様なSQL文を指定すれば良いでしょうか? 該当するレコードは確かに存在していますが、以下のSQL文では「空」になってしまいました。 【実行したSQL文】 SELECT フィールド FROM テーブル WHERE タムスタンプ型フィールド BETWEEN '2011-08-05 20:00:00' AND '2011-08-06 19:59:59' 何卒、ご教授頂ければと存じます。 宜しくお願いします。

    • ベストアンサー
    • MySQL
  • SQL文でご質問です

    ご存知の方がおられましたら、教えて下さい。 下記のように、親テーブルと親子を管理するための親子管理テーブルがあります。 条件として、CD1の1が指定された時、親テーブルよりNOが2のレコードと(これは親子関係がないレコード) 親子関係のレコードの親レコードであるNOが1のレコードと子レコードであるNOが11の3レコード を1つのSQL文で取得したいのですが、可能でしょうか? ご存知の方がおられましたら、ご教授のほどよろしくお願い致します。 親テーブル(OYA_TBL) NO,BN1,CD1 ------------- 1,4,NULL 2,NULL,1 3,NULL,NULL 11,4,1 12,4,2 13,4,NULL 親子管理テーブル(OYA_KO_TBL) GOODS_NO,PACK_GOODS_NO ------------- 1,11 1,12 1,13 ↓ [取得結果] NO,BN1,CD1 ------------- 1,4,NULL 2,NULL,1 11,4,1

  • SQL文について

    こんにちは! 皆様に教えて欲しいことがあります。 DBの中のデータで、一番年齢が高い人の名前を取得してくるときってどんなSQL文を書けばいいんでしょうか? 一番高い年齢を取得、なら select Max(年齢) from DB でいいと思うんですけど、一番年齢の高い人の名前、となると、どうやってとってくるのかわかりません。 where文で「having max(年齢)」ってやったんですけど、エラーが出て実行できませんでした。 今作ってるSQL文は、DB二つから他の条件も含めてselectしているので、他の理由でエラーになってるのかもしれませんが・・・。 職場にSQLがわかる人がいないので、誰にも聞けません。 もしわかる方がいらっしゃいましたら、教えてください。 宜しくお願いします。