2016-12-05 7 views
1
id | count 
1 | 1 
3 | 1 
5 | 1 
2 | 2 
4 | 3 

前と次のレコードを知りたいです。 id '5'の後のレコードはid '2'です。 私はこのクエリを作成します。mysqlに同じ値がある場合、以前のレコードを取得する方法

select id from test 
where id != 5 and count > 1 
LIMIT 1 

結果はOKですが、id '3'の後にレコードを知りたい場合は、id '2'を返します。私はid '5'を期待した。

私はそのクエリを変更しました。

select id from test 
where id != 5 && count >= 1 
LIMIT 1 

しかし、それは再び間違った結果を返します。 id '1'を返します

同じ値がある場合、前のレコードまたは次のレコードを取得するにはどうすればよいですか? お知らせください。

+0

フィルタが「id!= 5」のとき、どうすれば5になりますか? – haifzhan

+0

[MySQL:特定の行の前後5行を選択](http://stackoverflow.com/questions/29228273/mysql-select-5rows-before-and-after-specificrow) – amflare

答えて

0

あなたが数えているようですか? 次の5の値を選択する場合は、次のようになります。 1.まず、結果に注文番号を追加する必要があります。 2. row_numberをフィルタリングして、必要な結果を得ます。

SELECT row_number 
FROM 
     (SELECT id, @rownum := @rownum + 1 as row_number 
     FROM test 
     CROSS JOIN (SELECT @rownum := 0) r ORDER by count) T1 
WHERE id = 5 
INTO @concreate_order_number; 

SELECT id 
    FROM 
     (SELECT id, @rownum := @rownum + 1 as row_number 
     FROM test 
     CROSS JOIN (SELECT @rownum := 0) r ORDER by count) T2 
    WHERE row_number > @concreate_order_number 
    LIMIT 1; 
関連する問題