Выборка из базы в нужном порядке

370
03 сентября 2017, 01:58

Заголовок

В таблице присутствуют cat_id от 116 до 5000 Запрос:

SELECT * FROM `catalog` ORDER BY FIND_IN_SET(cat_id,'155,156,157')

Мне выводит все равно 116,117.... но никак не 155,156,157,116,117

Тоже не работает:

SELECT * FROM `catalog` ORDER BY  FIELD(cat_id,'155,156,157')

Как сделать правильно? Нужно выводить из базы только по заданному порядку.

Answer 1
SELECT * FROM `catalog` ORDER BY FIND_IN_SET(cat_id,'155,156,157')

Приведённый вами код работает, но не совсем так, как вам нужно. Элементы с выбранными id опускаются вниз получаемого списка. Попробуйте поместить id элементов в зеркальном порядке и указать явную сортировку с помощью DESC:

SELECT * FROM `catalog` ORDER BY FIND_IN_SET(cat_id,'157,156,155') DESC
Answer 2
SELECT * FROM `catalog` WHERE cat_id IN (1,2,3)
UNION (
    SELECT * FROM `catalog` 
    WHERE cat_id NOT IN (1,2,3) 
    ORDER BY cat_id DESC
)
READ ALSO
Проблема с русскими символами в составе ссылки

Проблема с русскими символами в составе ссылки

Я парсил сайт в своём приложении с помощью библиотеки Jsoup и столкнулся с проблемойНекоторые ссылки содержали в себе части на кириллице(параметр...

356
Разница между bean scope Singleton и Global-session?

Разница между bean scope Singleton и Global-session?

Пытаюсь понять разницу между областями бинов Singleton и Global-session

519
Проблема с JDBC в Birt

Проблема с JDBC в Birt

Всем привет!

623
Постраничный вывод данных

Постраничный вывод данных

Добрый день, есть один вопросик, добавил в дао метод с переменной count(нужно для подсчета страниц), в контроллере его вызвал requestsetAttribute("counts",...

431