SQL で指定したレコードの次のレコードを検索するにはどうすればよいでしょうか? 質問する

SQL で指定したレコードの次のレコードを検索するにはどうすればよいでしょうか? 質問する

指定したレコードの後に​​続くレコードを見つけるために、単一の SQL クエリ (MySQL 内) を使用したいと思います。

つまり、テーブルに次の内容が含まれている場合:

id, fruit
--  -----
1   apples
2   pears
3   oranges

次のようなクエリを実行できるようにしたいと思います。

SELECT * FROM table where previous_record has id=1 order by id;

(明らかにこれは実際の SQL 構文ではありません。私が達成しようとしていることを説明するため、疑似 SQL を使用しているだけです)

結果は次のようになります:

2, pears

現在の解決策は、すべてのレコードを取得して PHP で調べることですが、これは思ったよりも遅いです。もっと速い方法はありますか?

指定された値を持つ行と次の行の 2 つの行を返すものがあれば満足です。

編集: 申し訳ありませんが、私の質問は言葉が悪かったです。残念ながら、私の「次」の定義は ID ではなく、果物の名前のアルファベット順に基づいています。したがって、上記の例は間違っており、アルファベット順でリンゴの次に来るオレンジを返す必要があります。ID ではなく文字列を比較する方法はありますか?

ベストアンサー1

質問を編集し、以下のように簡略化した後、次のように変更できます。

SELECT id FROM table WHERE fruit > 'apples' ORDER BY fruit LIMIT 1

おすすめ記事