0

私がこのテーブルを持っているとしましょう

-----------------
|  id   |   word |
|  5    |   aab  |
|  6    |   sea  |
|  7    |   blue |
|  8    | color  |
|  9    |  nn    |
|  10   |  pp    |
|  11   |  oo    |
|  12   |  qq    |

idあるページにアクセスした人8

表示したいのは、この前後の 2 つの結果idです。これらの 2 つの結果はアルファベット順に並べられているため、コマンドで取得する必要があります。

aab - blue - color - nn - oo 

mysqlクエリでそれを行うにはどうすればよいですか? 最も効率的なコードを探しています。いくつのクエリを実行する必要がありますか? ID の前にアルファベット順に結果を取得し、両側から 2 つだけ取得するにはどうすればよいですか。助けてください。

4

2 に答える 2

0

そのテーブルのソートされたバージョンを作成する必要があります。次に、ID を指定すると、ID に対して算術演算を実行できます。

/* How to create the sorted table */
create table sorted_words 
(new_id mediumint not null auto_increment, primary key (new_id))
as select id as old_id, word from words order by word asc;

/* Query for getting two above and two under */
select id, word from sorted where id between 6 and 10

作業フィドル: http://sqlfiddle.com/#!2/c6734/1

于 2013-06-17T16:03:52.180 に答える