非主キーで順序付けられたデータのテーブルがあります。
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
これを行うためのより良い、より効率的な方法があれば?