2

申し訳ありませんが、サンプルコードが必要なのはわかっていますが、残念ながら、この機能を実装する方法や検索する必要があるものについてはまったくわかりません.

次の関係があるとしましょう。

╔═══════════════════╗
║ id  name  quality ║
╠═══════════════════╣
║ 1   Will  4       ║
║ 2   Joe   9       ║
║ 3   Bill  2       ║
║ 4   Max   1       ║
║ 5   Jan   10      ║
║ 6   Susi  5       ║
║ 7   Chris 6       ║
║ 8   Noa   9       ║
║ 9   Sisi  4       ║
╚═══════════════════╝

ここで、探しているデータに基づくサブセットが必要です。たとえば、ID 5 のレコードを検索しています。私の結果では、Jan のレコードだけでなく、Jan の前の 2 つのレコードと Jan の後ろの 2 つのレコードも必要です。したがって、次の結果セットがあります。

╔═══════════════════╗
║ id  name  quality ║
╠═══════════════════╣
║ 3   Bill  2       ║
║ 4   Max   1       ║
║ 5   Jan   10      ║
║ 6   Susi  5       ║
║ 7   Chris 6       ║
╚═══════════════════╝

この問題を解決するためのキーワードを教えてください。

4

3 に答える 3

2

ID フィールドが常に事前に設定された順序であると仮定すると (特定の行の前後 2 つは ID フィールドで数えることができます)、次の 2 つの単純なクエリのいずれかを実行できます。

SELECT * 
FROM   tbl1 
WHERE  id BETWEEN 3 AND 7 

(SQL Fiddle のデモはこちらにあります)

また:

SET @a:=5; 

SELECT * 
FROM   tbl1 
WHERE  id BETWEEN @a - 2 AND @a + 2 

(SQL Fiddle のデモはこちらにあります)

これがあなたの質問に答えることを願っています。
他に何か必要な場合はお知らせください。

幸運を!

于 2013-10-06T09:09:47.773 に答える