2016-02-10 60 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'表达式返回的数字。 –