ArtemSV
@ArtemSV
Пытаюсь выучить php/mysql/Yii2

ORDER BY FIElD не корректно работает, как это исправить?

необходимо отсортировать в заданном порядке.
Но если в базе 100 id, и задаю порядок 90 через ORDER BY FIElD, то оставшиеся 10 появляются на первом месте.
вот пример.
sqlfiddle.com/#!2/41e06f/372
Задан ORDER BY FIElD(id, 1, 6). но 1 и 6 на последнем и предпоследнем местах соответственно.
Как сделать так, чтоб 1 и 6 были на первом и втором месте?
  • Вопрос задан
  • 3602 просмотра
Пригласить эксперта
Ответы на вопрос 3
nalomenko
@nalomenko
Руководитель отдела разработок в студии «Lava»
SELECT * 
FROM test
ORDER BY FIELD(id, 6, 1) DESC;
Ответ написан
ArtemSV
@ArtemSV Автор вопроса
Пытаюсь выучить php/mysql/Yii2
если 100 записей и более, то массив нужно отсортировать в обратном порядке, без этого никак?
Ответ написан
Комментировать
@Arik
Если закрепляете записи, то лучше использовать отдельное поле и желательно типа timestamp/datetime, тогда можно сортировать хоть как
ORDER BY `fixedAt` DESC, id DESC
ORDER BY `fixedAt` DESC, id ASC

Последняя закрепленная запись всегда вверху, остальные записи по вкусу.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы