2016-02-10 84 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

可以使用ORDER BY子句中CASE表達:

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

啊感謝。 「那麼」按照我的理解只設定訂單頭寸? –

+0

聰明的'column_y + 2'技巧;-) – maxhb

+0

@RamonBakker'THEN'確定'CASE'表達式返回的數字。 –