MySQLの質問です


何らかの条件でソートを行い、1つのデータを抽出した場合に前後のデータを1つずつ一緒に抽出したいのですが何か良い方法はありませんか?

現在は、選択したレコードの呼び出し、前、後ろと3回クエリを送信してデータを呼び出しています。

回答の条件
  • 1人10回まで
  • 登録:2009/11/17 05:03:36
  • 終了:2009/11/18 01:15:45

回答(2件)

id:kn1967 No.1

kn1967回答回数2915ベストアンサー獲得回数3012009/11/17 08:16:40

ポイント35pt
SELECT * FROM テーブル WHERE コード番号 = 10
UNION
(SELECT * FROM テーブル WHERE コード番号 < 10 ORDER BY コード番号 DESC LIMIT 0,1)
UNION
(SELECT * FROM テーブル WHERE コード番号 > 10 ORDER BY コード番号 LIMIT 0,1)
;

MySQL :: MySQL 4.1 リファレンスマニュアル :: 6.4.1.2 UNION 構文

id:black_kenchan

今、自分が行っているクエリをまとめられるのですね!

有難うございます。

試してみます。

2009/11/17 11:43:53
id:emu2929 No.2

emu2929回答回数19ベストアンサー獲得回数22009/11/17 11:02:27

ポイント35pt

ユニークID等のカラムがあればbetweenでひっぱれるかと。


例)memberテーブルよりuidがxの会員データの前後を含めて引っ張る場合



SELECT * FROM member WHERE uid BETWEEN x - 1 and x + 1 ;

id:black_kenchan

おっ、更にシンプルに出来るのですね!

有難うございます!

試してみます。

2009/11/17 11:45:22

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません