如何以不同的方式排序

时间:2014-02-12 15:28:26

标签: mysql sql

MySQL表中有些国家/地区:

id | title
1  | USA  
2  | Spain
3  | Italy
4  | Canada

我需要选择列表顶部的意大利和其他按国家/地区排序的国家/地区。 但'order by'不起作用。

(SELECT * FROM countries WHERE id = 3) UNION (SELECT * FROM countries WHERE id != 3 ORDER BY title)

3 个答案:

答案 0 :(得分:5)

首先根据是否为意大利对数据进行排序,将意大利排在第一位。然后根据标题排序。

SELECT * FROM countries
ORDER BY title='Italy' DESC, title

(你必须知道的唯一技巧 - 或试验 - 是FALSE来自TRUE,因此代码中的DESC。我想这是有道理的如果你将它们转换为0 <1。)

答案 1 :(得分:0)

你可以试试这个

  SELECT * FROM countries 

  ORDER BY  case when id !=3  then `title` end asc ,
            case when id =3   then `title` end asc ;

答案 2 :(得分:0)

SELECT * FROM countries WHERE id = 3
union
SELECT c.* FROM (SELECT * FROM countries WHERE id != 3 order by title) c