我有一个表,它是国家的名单,有两个字段,ID(int)和COUNTRY_NAME。我需要写一个查询,可以提取按字母顺序排列的国家列表,但美国的记录在顶端。我怎样才能做到这一点?假设美国记录的ID = 100。MySQL的,按字母顺序排序,出现异常
1
A
回答
5
select *
from country
order by case when id = 100 then 0 else 1 end, country_name
请注意。
该解决方案不同于其他在某些方面
- 的结合的方式提出。 UNION的默认行为是删除重复项,这可能会或可能不需要(Unions in MySQL)。此外,除非ID被索引,你将有执行时间的两倍
- “选择的东西,你就可以选”是好的,但返回额外的数据,并根据这可能是不希望接收框架。
0
(SELECT *
FROM countries
WHERE id = 100)
UNION
(SELECT *
FROM countries
WHERE id != 100
ORDER BY country_name)
不一定是最好的办法。我更愿意在使用它的时候在顶部对美国进行硬编码,在模型层面上。
1
select (case when id = 100 then 1 else 0) presort, country_name from countries order by presort desc, country_name asc
选择一个标志别名presort,对于id = 100为1,对于其他任何情况为0。选定的行然后按降序进行排序,首先将id = 100,然后按pre_name为0时的country_name升序排序,对于所有其他id,情况就是如此。
+0
您能否请求包含查询的解释? –
+0
@ N.N。当然。 :)我希望这是可以理解的。 – flesk
0
使用联合执行两个单独的查询。
select id, country_name from table where id=100
union
select id, country_name from table where id!=100 order by country_name desc;
我没有测试过这个,但理论上它应该工作。
相关问题
- 1. 按字母顺序排序,然后按字母顺序排列
- 2. 按字母顺序排序
- 3. 排序按字母顺序
- 4. 按字母顺序排序
- 5. 按字母顺序排序
- 6. 按列排序MySQL行,但不按字母顺序排列
- 7. 按字母顺序排列
- 8. 按字母顺序排列PHP排序
- 9. MySQL按字母顺序排列的顺序
- 10. 按字母顺序排序字符串
- 11. SQL - 按字母顺序排序的列
- 12. 排序表的顺序不按字母顺序排列
- 13. 在MYSQL中按字母顺序排列多行和排序
- 14. 按字母顺序排序元素,然后按数字排序
- 15. 列出3列按字母顺序排列的mysql数据
- 16. DB2 - 按字母顺序排序
- 17. 如何按字母顺序排序NSMutableOrderedSet?
- 18. Treeset按字母顺序排序
- 19. 按字母顺序重新排序TableView
- 20. 排序按字母顺序ABRecords iPhone上
- 21. 按字母顺序排序jquery结果
- 22. 按字母顺序排序Jtree节点
- 23. 按字母顺序排序由opendir()
- 24. 数组排序按字母顺序
- 25. 名单按字母顺序排序
- 26. C++按字母顺序插入排序
- 27. 使用elasticsearch按字母顺序排序
- 28. 按字母顺序排序内容
- 29. DataView按字母顺序排序
- 30. PHP按字母顺序排序
正如我讨厌它的网站做到这一点,当一个网站的用户。它作为网站所有者并不关心来自其他地方的访问者(所以为什么要问)。只有两个选项“美国”和“世界其他地方”;-) - 无论如何我的塔彭丝。 –