MYSQL сортировка с заранее определенным порядком

Статус
В этой теме нельзя размещать новые ответы.
Можно попробовать вот как


сводишь свой порядок вывода по ID в переменную, допустим $ids (5 2 7)

а в запросе применяешь строку, каждый раз подсовывая нужный тебе порядок:

ORDER BY FIELD(id , ' . implode( ' ,', $ids ) . ');

и все выводится в нужном тебе порядке.
 
Shur: во, то самое.
 
Данную проблему можно решить проще, только через MySQL, если "топ" не очень велик - посмотри
 
Например делать свой порядок и сортировать по нему
Код:
SELECT * FROM test WHERE id IN(5,1,3,2,4)
ORDER BY id=4 DESC, id=5 DESC, id=1 DESC
или
Код:
SELECT * FROM test WHERE id IN(5,1,3,2,4)
ORDER BY 
CASE id
    WHEN 3 THEN 1
    WHEN 2 THEN 2
    WHEN 5 THEN 3
    ELSE 9999
END
 
Например делать свой порядок и сортировать по нему
Код:
SELECT * FROM test WHERE id IN(5,1,3,2,4)
ORDER BY id=4 DESC, id=5 DESC, id=1 DESC
или
Код:
SELECT * FROM test WHERE id IN(5,1,3,2,4)
ORDER BY 
CASE id
    WHEN 3 THEN 1
    WHEN 2 THEN 2
    WHEN 5 THEN 3
    ELSE 9999
END

да потестил - отличный вариант (первый), только WHERE id IN можно не писать , а то меня в заблуждение ввел)))
 
Например делать свой порядок и сортировать по нему
Код:
SELECT * FROM test WHERE id IN(5,1,3,2,4)
ORDER BY id=4 DESC, id=5 DESC, id=1 DESC

Очень понравился данный способ! Интересует - это собственная придумка или другой источник (форум, книга и т.п.)? Не поделитесь ссылкой? Очень интересуюсь темой "нетривиальных" запросов в SQL.

Предложенный способ понравился тем, что одним таким запросом можно "особым" образом упорядочить по одному полю, а по нескольким одновременно!
 
Ребята помогите, я с этим mysql совсем уже запутался :(
Вобщем есть простая БД с 52 таблицами, мне нужно выбрать из нее например строку в одной из таблиц, данные выводяться, но почему-то не в порядке сортировки, а вместе и со значениями NULL из полей, хотя я явно указываю сортровать по полю и в первых 32 полях у меня только целые числа, а поля с NULL начинаються только после 32 строки.,
запрос вида:
SELECT `name`FROM `products`ORDER BY `product_code`
 
Ребята помогите, я с этим mysql совсем уже запутался :(
Вобщем есть простая БД с 52 таблицами, мне нужно выбрать из нее например строку в одной из таблиц, данные выводяться, но почему-то не в порядке сортировки, а вместе и со значениями NULL из полей, хотя я явно указываю сортровать по полю и в первых 32 полях у меня только целые числа, а поля с NULL начинаються только после 32 строки.,
запрос вида:
SELECT `name` FROM ORDER BY `product_code`

Т.е. я так понял чтоб null значения шли в конец...
тогда попробуй так:

select `name`,`product_code`, ISNULL(`product_code`) val1 from `products` order by val1, `product_code`
 
Вобщем есть простая БД ..., мне
нужно выбрать из нее например строку в одной из таблиц, данные выводяться, но почему-то не в порядке сортировки, а вместе и со значениями NULL из полей
...
SELECT `name`FROM `products`ORDER BY `product_code`

Если тебе не нужно выводить значения NULL из name, это нужно задать не в ORDER BY, а в WHERE

 
Очень понравился данный способ! Интересует - это собственная придумка или другой источник (форум, книга и т.п.)? Не поделитесь ссылкой? Очень интересуюсь темой "нетривиальных" запросов в SQL.

Предложенный способ понравился тем, что одним таким запросом можно "особым" образом упорядочить по одному полю, а по нескольким одновременно!

придумал, когда-то было похожее надо было в проекте упорядочить 12 месяцев начиная с настоящего, на этом примере будет
Код:
SELECT * FROM test
ORDER BY id>=MONTH(NOW()) DESC, id ASC
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху