У меня есть таблица записей, как показано ниже:
my_table
id | rating | description 1 | 0.0 | bed 2 | 1.0 | good 3 | 0.0 | bed 4 | 1.0 | good 5 | 0.0 | bed 6 | 0.0 | bed 7 | 0.0 | bed
Теперь я ограничил эту таблицу оценкой, и я получил следующий результат. (Запрос: SELECT * FROM my_table ORDER BY rating DESC)
Таблица результатов
id | rating | description 2 | 1.0 | good 4 | 1.0 | good 1 | 0.0 | bed ==> 3 | 0.0 | bed 5 | 0.0 | bed 6 | 0.0 | bed 7 | 0.0 | bed
Теперь мне нужна предыдущая запись id = 3.
ожидаемый результат
id | rating | description 1 | 0.0 | bed
Как я могу это достичь. в одном запросе mysql? Пожалуйста, помогите мне.
Использовать это:
SELECT * FROM my_table ORDER BY rating DESC LIMIT 2,1
Попробуй это
SELECT prev.id, rating, description FROM my_table current JOIN my_table prev ON (prev.rating < current.rating) OR (prev.rating = current.rating AND (prev.description < current.description OR (prev.description = current.description AND prev.id < current.id))) WHERE current.id = @currentId ORDER BY prev.rating desc, prev.description desc, prev.id desc LIMIT 1
Попробуйте это для быстрого решения:
SELECT * FROM my_table WHERE rating = '0.0' и id <'3' ORDER BY id DESC LIMIT 1
Это выберет строку со следующим самым низким идентификатором, чем тот, который указан в рейтинге 0.0. Это будет работать без сортировки, но не будет получать строки, которые имеют рейтинг 1.0, даже если они будут следующей строкой.
попробуй это:
select * from my_table where rating<(select max(rating) from my_table) and id<3 limit 1;