• ベストアンサー
  • 暇なときにでも

レコードを1件のみ取得した後、検索をやめる方法はあるのでしょうか?

PostgreSQLのデータベースでテーブルから、 "1件のレコードが見つかった時点で、他のレコードを検索するのをやめる" という事はSQLでできるのでしょうか? 【テーブル名 Fruit 】 | id | option | name |  1    2     りんご  2    1     みかん  3    1     メロン  4    1     バナナ  5    4     いちご 上記のようなテーブルから、optionが1のレコードを検索する時、 どのレコードでもいいので、1件見つけた時点で他にも該当のレコードがあるかという検索の処理をしない。 という事はできるのでしょうか? 出来るのであれば、膨大な数のレコードがある場合、検索の時間が減るのでは無いかと思ったのですが・・・ 現在は下記のSQLのように、OFFSETとLIMITを使用して1件のレコードを取得しています。 SELECT      * FROM      Fruit WHERE      option=1 OFFSET 0 LIMIT 1 このやり方であっているのでしょうか? または他の仕方があるのでしょうか? 教えていただきたいです。 宜しくお願いします。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数2410
  • ありがとう数1

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

  • ベストアンサー
  • 回答No.1

LIMITで正しいと思います。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

これで良かったんですね。 安心しました。 ありがとうございました!

関連するQ&A

  • 片方のテーブルに存在しないレコードの抽出する方法

    shop1テーブルに存在して、shop2テーブルに存在しないレコードを抽出させたいのですが、 どのようにSQLを書けば良いのでしょうか? よく知らないのですが、SQLでは結合?というジャンルの手法ですか? shop1テーブル nama num みかん 10 りんご 20 なし 30 いちご 50 shop2テーブル name num みかん 55 りんご 44 なし 33

  • ユニオンクエリ?レポートにて1件のレコードを複数レコードとして表示。

    レポートにて1件のレコードを複数レコードとして表示。したいです。 マスタというテーブルに時間1・結果1・時間2・結果2・時間3・結果3という項目があり、 これをクエリにて別々のレコードとしてレポートに表示したいのです。時間1・時間2・時間3すべて入っているものは3件として 時間1・結果1 時間2・結果2 時間3・結果3 時間1・時間2のみ入っているものは2件として。 ユニオンクエリというのを使うと出来そうですが、よく分かりません。 SQLビューにどのように書けばよろしいでしょうか? テーブルの構成は今から直すことは出来ない状態で…。

  • ポスグレで指定した中で最大のレコードを1件取得する

    ポスグレで指定した中で最大のレコードを1件取得する方法を教えてください。 下記の項目を持つテーブルがあるとします。 ・部署 ・氏名 ・日付 ・連番 ・内容 KEY(部署,氏名,日付,連番) 部署と氏名を指定した中で直近のレコードを1件だけ取得したいです。 例えば select * from テーブル where 部署 = 値 and 氏名 = 値 order by 日付 desc ,連番 desc で頭の1件を抜ければよいのですが、 limit 1を指定しても、どうやらorder byより先にlimitがかかっているようで、並び替えた後の最初の1件をとれません。 また、 ソート項目が1つだけなら select * from テーブル where 部署 = 値 and 氏名 = 値 and 日付 = (select max(日付) from テーブル t1 where t1.部署 = 値 and t1.氏名 = 値) という事もできますが、 日付が最大の中での連番が最大というのはさらに一手間必要です。 何か良い方法はありませんか? 全件持ってきた後にアプリ側で最初の1件だけ使うのではなく、postgres内で1件にしてアプリ側に渡したいです。

  • 条件検索の方法について

    フィールド (name) に「いちごがむ」「いちごじゅーす」「みかんがむ」「みかんじゅーす」がある場合、文字の先頭に『いちご』がつく情報を抽出するsql文は以下になります。 SELECT * FROM test WHERE name LIKE 'いちご%' では、フィールド (name) に「いちご」「みかん」があるとします。 検索文字『いちごがむ』(もしくは『いちごじゅーす』)からnameの「いちご」箇所を抽出するにはどのようなsqlを発行すればよいのでしょうか? よろしくお願いします。

    • ベストアンサー
    • MySQL
  • SQLiteで最も古いレコードのみの削除

    AndoroidでDBを使うのですが、考える動作のSQL文が作成できません。 テーブルTESTは以下のカラムを持ちます  ・ID - primary key not null  ・VALUE - not null テーブルTESTは最大で10件のレコードを保持します、11件目のレコードが発生したら 最も古い1件目のレコードを削除してから、11件目のデータを新しい10件目のデータとして テーブルに保存します。 そのために「最も古いレコード1件のみを削除する」というSQLを作成したいのですが、 考えたSQL文が正しくないと怒られてしまいます。 delete from TEST as A, (select * from TEST LIMIT 1)as B where A.ID=B.ID; この動作を1つのSQL文で行うのは不可能なのでしょうか?

  • access テーブル結合の逆?

    Access2003 お世話になります。SQLで以下のようなデータを取得する場合、上手い方法はあるのでしょうか。なんだかとても簡単な事のような気がするのですが…… テーブルA: ---品名--- りんご みかん もも いちご テーブルB: ---品名--- りんご もも このテーブルBに入力されているレコードをテーブルAから"除外"して、結果として「みかん」と「いちご」だけが欲しいのです。 テーブルBのレコードが少なければ、直接 品名<>"りんご" とか書いてもいいのかもしれませんが、結合のようなSQLで一発でできてしまったりしないでしょうか。 access上で可能なスマートな方法があれば教えていただきたいです。 よろしくお願いいたします。

  • SQL文について

    SQLの抽出方法について質問です。 【会員】テーブル関連 すきなフルーツを複数選択できます。 テーブル【MEMBER】と【MEMBER_FRUIT】2つのテーブルで管理 例: Aさんは「りんご」「みかん」「スイカ」がすきです。 Bさんは「りんご」「メロン」がすきです。 Cさんは「みかん」「スイカ」がすきです。 テーブル【MEMBER】 ID、MEMBER_CD、MEMBER_NAME 1  10       Aさん 2  20       Bさん 3  30       Cさん ・ ・ テーブル【MEMBER_FRUIT】 ID、MEMBER_CD、FRUIT_CD 1   10      1 2   10      2 3   10      3 4   20      1 5   20      4 6   30      2 7   30      3 ・ ・ テーブル【FRUIT】 ID、ITEM 1 りんご 2 みかん 3 スイカ 4 メロン 【抽出条件】関連 条件も複数選択できます。 テーブル【SEARCH】と【SEARCH_DETAIL】2つのテーブルで管理 ※会員を抽出条件を管理するテーブル テーブル【SEARCH】 ID、TITLE 1 「りんご」または「メロン」がすきな人 2 「スイカ」がすきな人 ・ ・ テーブル【SEARCH_DETAIL】 SEARCH_ID、FRUIT_CD 1         1 1         4 2         3 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・     【SEARCH】のID1の出力結果イメージ MEMBER_CD、MEMBER_NAME 10         Aさん 20         Bさん こんなSQLを作成してみました。 【SEARCH】テーブルをループで1件づつ処理しようと考えています。 他にもっと効率がいいSQLがありますか? よろしくお願いします。 SELECT DISTINCT MEMBER.MEMBER_CD, MEMBER_NAME FROM MEMBER,MEMBER_FRUIT WHERE MEMBER.MEMBER_CD = MEMBER_FRUIT.MEMBER_CD AND MEMBER_FRUIT.FRUIT_CD in ( SELECT FRUIT_CD FROM SEARCH,SEARCH_DETAIL WHERE SEARCH.ID = SEARCH_DETAIL.SEARCH_ID )

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

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

  • なぜ BDEのどれかが嘘となるのでしょうか

    テーブルの上にメロン、いちご、みかんが置いてあり、AからEの5人が次のように発言している。このうち1人がうそを言っているが、それは誰か。 A 「メロンといちごは合わせて9個ある」 B 「いちごは4個しかない」 C 「メロンといちごとみかんは全部で12個」 D 「みかんは4個しかない」 E 「いちごとみかんを合わせると7個」 解説 全員が本当のことを言っているとして、発言者と各個数を表にすると、次のようになる。表よりB,D,Eの誰かがうそを言っていることがわかる。 1 Bがうそをついているとすると、いちごは3個となるが、メロンが6個となるため、合計が13個となり不適当。 2 Dがうそをついているとすると、みかんは3個となり、合計も12個となる。 3 Eがうそをついているとすると、いちごとみかんは合わせて8個となる。このときメロンは5個であるから、合計13個となり不適当。 よって、正答は4となる。 解説には表がなく、表の書き方もわかりません

  • 検索結果の出力方法について

    "001","Aさん","ぶどう", "001","Aさん","みかん", "001","Bさん","バナナ", "001","Bさん","イチゴ", "001","Cさん","スイカ", "001","Cさん","メロン", "002",・・・ "003",・・・ 例えば上記の様な検索用のログファイルがあり、”001”で検索した場合、今のところ極々単純に ━━━━━━━ │Aさん|ぶどう| ━━━━━━━ |Aさん|みかん| ━━━━━━━ |Bさん|バナナ| ━━━━━━━ |Bさん|イチゴ| ━━━━━━━ |Cさん|スイカ| ━━━━━━━ |Cさん|メロン| ━━━━━━━ ↑という感じで結果を出力させているのですが、 これを ━━━━━━━ |Aさん|ぶどう| |    |みかん| ━━━━━━━ |Bさん|バナナ| |    |イチゴ| ━━━━━━━ |Cさん|スイカ| |    |メロン| ━━━━━━━ 上記のように、同じ名前の結果が複数ある場合、それを統一して結果を表示させたいと考え、いろいろと悪戦苦闘してみましたが、どうしてもうまくいきません。 ログファイルには手を加えないという事を前提に、下のテーブルのような出力に なるような、構文の書き方がありましたら、是非教えてください。

    • 締切済み
    • PHP