ORDER BY case when оператор / несколько

Хочу добавить в свой запрос пункт:

SELECT * FROM MV_immo 
WHERE bien != 'Autre' AND bien != 'Indifférent' 
ORDER BY case
    when vendue = 'AV' then 1
    when vendue = 'VPNA' then 2
    when vendue = 'EC' then 3
else 6 end, Id DESC LIMIT 0,6

Теперь у меня есть столбец «position» (int), и я хочу сохранить первый порядок и добавить предложение ORDER «position» (что-то вроде этого ...):

SELECT * FROM MV_immo 
WHERE bien != 'Autre' AND bien != 'Indifférent' 
ORDER BY case
    when vendue = 'AV' AND position ASC then 1
    when vendue = 'VPNA' AND position ASC then 2
    when vendue = 'EC' AND position ASC then 3
else 6 end, Id DESC LIMIT 0,6

ИЛИ может ...

SELECT * FROM MV_immo 
WHERE bien != 'Autre' AND bien != 'Indifférent' 
ORDER BY case
when vendue = 'AV', position ASC then 1
when vendue = 'VPNA', position ASC then 2
when vendue = 'EC', position ASC then 3
else 6 end, Id DESC LIMIT 0,6

Моя цель - сохранить первый заказ (ORDER BY vendue) и добавить предложение 2nd ORDER: position.
Мне нужна ваша помощь, потому что я запускаю php, и для меня это непросто.
Как я могу это сделать?

Почему внутри падежного выражения? Я думаю, вам просто нужно поставить «позицию» перед Id: else 6 end, position ASC, Id DESC LIMIT 0,6

Alex Zen 04.04.2018 20:30
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
1
327
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если я правильно понял, вы хотите:

ORDER BY (case when vendue = 'AV' then 1
               when vendue = 'VPNA' then 2
               when vendue = 'EC' then 3
               else 6
          end),
         position,
         Id DESC

Вы можете сократить это, если хотите:

order by field(vendue, 'EC', 'VPNA', 'AV') desc, position, id

Обратите внимание, что значения находятся в порядке обеспечить регресс в вызове field().

Другие вопросы по теме