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)
答案 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