我有一个按非主键排序的数据表,例如
id |   likes
4  |     6  
2  |     5
5  |     2
3  |     2
1  |     2
我需要一个查询来查找 id #5 之后的行,即 id #3。
我试过使用行号并写了这个,但它似乎真的效率低下
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
如果有更好,更有效的方法来做到这一点?