Предложение WHERE
в SQL не влияет на порядок сортировки;это делает предложение 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;