2016-02-10 2 views
2

У меня есть таблица со столбцом, который может содержать: «kldr», «bgg» или целое число.PHP + MySQL - Сортировка запроса

Теперь я хочу запрос с результатом в следующем порядке:

1. kldr 
2. kldr 
3. bgg 
4. bgg 
5. 1 
6. 2 
7. 3 
8. etc. 

Может кто-нибудь помочь мне? Мой текущий запрос явно не работает.

SELECT * 
FROM table 
WHERE column_x='$value_x' 
ORDER BY column_y LIKE '%kldr%' ASC, LIKE '%bgg%' ASC, floor ASC 

ответ

5

Вы можете использовать CASE выражение в предложении ORDER BY:

SELECT * 
FROM table 
WHERE column_x='$value_x' 
ORDER BY CASE WHEN column_y LIKE '%kldr%' THEN 1 
       WHEN column_y LIKE '%bgg%' THEN 2 
       ELSE column_y + 2 
     END 
+0

Ах спасибо. «THEN» устанавливает только позицию позиции, как я понимаю? –

+0

Умный 'column_y + 2' трюк ;-) – maxhb

+0

@RamonBakker' THEN' определяет число, возвращаемое выражением 'CASE'. –

Смежные вопросы