0

非主キーで順序付けられたデータのテーブルがあります。

id |   likes
4  |     6  
2  |     5
5  |     2
3  |     2
1  |     2

ID #3 になる ID #5 の後の行を検索するクエリが必要です。

私は行番号を使用してこれを書いてみましたが、それは本当に非効率的です

select * from (
                SELECT  l.id,
                l.likes,
                @curRow := @curRow + 1 AS row_number
                FROM    sk_posters l
                JOIN    (SELECT @curRow := 0) r
                WHERE active = 'yes'
                order by likes desc, id desc)
            as mycount where row_number =
            (select row_number from (
                SELECT  l.id,
                l.likes,
                @curRow := @curRow + 1 AS row_number
                FROM    sk_posters l
                JOIN    (SELECT @curRow := 0) r
                WHERE active = 'yes'
                order by likes desc, id desc)
            as mycount
            where id=5)+1 limit 1

これを行うためのより良い、より効率的な方法があれば?

4

1 に答える 1

0

次のようにクエリの最後に limit を使用できます

  SELECT * FROM YOUR_TABLE LIMIT 2,1
于 2013-07-18T04:33:52.773 に答える