Предложение в SQL WHERE
не влияет на порядок сортировки; это делает предложение ORDER BY
.
Если вы не указали порядок сортировки с использованием ORDER BY
, SQL будет выбирать свой собственный порядок, который обычно будет порядком первичного ключа, но может быть любым.
Если вам нужны записи в определенном порядке, вам необходимо указать предложение ORDER BY
, которое сообщает SQL о заказе, который вы хотите.
Если заказ, который вы хотите, основан исключительно на этой нечетной последовательности идентификаторов, то вам нужно указать это в предложении ORDER BY
. Это будет сложно определить именно это. Это возможно, но потребуется некоторый неудобный код SQL и значительно замедлит запрос (из-за того, что он больше не использует ключ для поиска записей).
Если ваша желаемая идентификационная последовательность связана с каким-либо другим фактором, который является более предсказуемым (например, вы действительно хотите, чтобы записи в алфавитном порядке имен), вы можете просто сделать ORDER BY name
(или что бы то ни было в этом поле).
Если вы действительно хотите, чтобы сортировать по идентификатору в произвольной последовательности, вам может понадобиться для создания временного поля, которое можно использовать для сортировки:
SELECT *,
CASE id
WHEN 7 THEN 1
WHEN 1 THEN 2
WHEN 5 THEN 3
WHEN 3 THEN 4
WHEN 9 THEN 5
END AS mysortorder
FROM mytable
WHERE id in (7,1,5,9,3)
ORDER BY mysortorder;
Я получил этот запрос от одного из разработчиков моей компании, я просто отвечаю: «Кажется, у вас есть точная информация о 7,1,5,9,3, почему вам все еще нужно сортировать ее снова?» – ajreal
@ ajreal Я получаю эти идентификаторы с другого сервера. n Мне нужно запросить db в соответствующем порядке. я не хочу сортировать его, db возвращается отсортированным способом .. я хочу избежать сортировки :) –
.. ARGGGGG ...у вас уже есть эти идентификаторы в ORDER из '7,1,5,9,3', почему вам нужно снова отсортировать их? Два решения: «Запросите один идентификатор по id». 'Или используйте массив держателей мест, который является вашим первоначальным заказом и извлекает результаты из базы данных в любом порядке, зациклируйте массив держателей мест и установите его соответствующим образом. У вас уже есть курица, почему вы все еще задаетесь вопросом, как кладут яйца? – ajreal