我有一個表,它是國家的名單,有兩個字段,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. 排序按字母順序
- 7. 按字母順序排序
- 8. 按字母順序排序
- 9. 按字母順序排序iPhone TableView從RSS按字母順序排序
- 10. 按列排序MySQL行,但不按字母順序排列
- 11. 按字母順序排列
- 12. 按字母順序排列
- 13. 按字母順序排列
- 14. 按字母順序排列PHP排序
- 15. MySQL按字母順序排列的順序
- 16. 按字母順序排序按鈕
- 17. 按字母順序排序按鈕
- 18. 按字段順序排列+按字母順序排列
- 19. 按字母順序排序字符串
- 20. 排序字符串按字母順序
- 21. 按字母順序排列的鏈表不按順序排列
- 22. 的Python:按字母順序排序在
- 23. 按字母順序排序ListView的ListViewGroups
- 24. SQL - 按字母順序排序的列
- 25. 排序表的順序不按字母順序排列
- 26. 在MYSQL中按字母順序排列多行和排序
- 27. 按字母順序排序元素,然後按數字排序
- 28. 列出3列按字母順序排列的mysql數據
- 29. 輸出按字母順序
- 30. Linq:按ID排序,然後按字母順序按字母排序
正如我討厭它的網站做到這一點,當一個網站的用戶。它作爲網站所有者並不關心來自其他地方的訪問者(所以爲什麼要問)。只有兩個選項「美國」和「世界其他地方」;-) - 無論如何我的塔彭絲。 –