Сложный запрос в MySQL - PullRequest
       2

Сложный запрос в MySQL

1 голос
/ 26 июня 2011

Вот моя проблема: у меня есть таблица, которая содержит несколько столбцов

(Id, email, last_visit_date, picture)

Столбец изображения может иметь 3 варианта:

  • пользователь без изображения -> "noPic "
  • пользователь с приватной картинкой ->" privatePic "
  • пользователь с картинкой ->" pic2 "(" pic "и userID)

Мне нужензапрос (для MySQL), который будет возвращать все строки в следующем порядке:

  1. Все пользователи с изображениями упорядочены по last_visit_date
  2. Все пользователи с частными изображениями упорядочены по last_visit_date
  3. Все пользователи без картинок упорядочены по last_visit_date

Я не мог понять это

Ответы [ 3 ]

1 голос
/ 26 июня 2011
ORDER BY picture LIKE 'pic%' DESC, picture = "noPic" DESC, last_visit_date
0 голосов
/ 26 июня 2011

Использовать case / when конструировать в вашем заказе по выражению ... В этом случае я устанавливаю значения в 1, 2 или 3, ТО по порядку до даты последнего посещения ...

select
      YT.*
   from
      YourTable YT
   order by
      case when YT.Picture = "noPic" then 1
           when YT.Picture = "PrivatePic" then 2
           else 3 
      end,
      YT.Last_Visit_Date desc
0 голосов
/ 26 июня 2011

mysql будет неявно преобразовывать значения bool в целые числа (1 и 0 соответственно).Таким образом, вы можете сортировать, сравнивая значение изображения:

ORDER BY picture = 'privatePic' ASC, picture = 'noPic' ASC, last_visit_date
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...