Intereting Posts
Сделать модель, миграцию и контроллер с одним командным и правильным множественным окончанием Загрузите пользователя facebook, если вы только зарегистрировались в facebook php sdk Проверьте тип файла (FLV) перед загрузкой файла PHP во временную папку, только прочитав только 3 байта файла Разница между системой и shell_exec php, как перемешать / рандомизировать порядок ассоциативного массива, сохраняя пары ключ / значение как перенаправить домен в соответствии с IP-адресом страны Какова таблица лидеров лучшей практики с php, mysql, memcached? Попытка json_encode в PHP MongoDB, похоже, не хочет нажимать на массив Использование адресного объявления Charles и SSL Apple непрерывный цикл через массив PHP (или объектные ключи) Как загрузить возвращаемый массив из файла PHP? Symfony вызывает сборщик мусора PHP на Ubuntu 14.04, даже если session.gc_probability установлен в 0 PHP и инкапсуляция строк MySQL в массив JSON Регулярное выражение в PHP: как создать шаблон для таблиц в html

Получить только вторую последнюю запись – mysql-query

У меня есть таблица записей, как показано ниже:

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;