Order-By
SQL:自定義排序順序
假設我有一列帶有顏色名稱 (
colour
)。自然,它將是一個字元欄位。我想按 對錶格進行排序
colour
,但不是按字母順序,而是按彩虹或晶體管顏色程式碼順序。使用任意排序順序對列進行排序的最簡單方法是什麼?像這樣的東西:
id name colour 1 this red 4 that red 2 stuff orange 5 nonsense orange 3 whatever yellow 6 etc yellow
顏色按彩虹順序排列。
顏色的使用只是一個例子。有許多文本數據的順序不是按字母順序排列的。
我會使用另一個帶有鍵值的表(@McNets 也建議)感覺它不那麼冗長且更具可擴展性。
----------------------------- | Colours | ----------------------------- | KeyValue | Name | ----------------------------- | 1 | Red | | 2 | Orange | | 3 | Yellow | ----------------------------- ----------------------------- | OtherTable | ----------------------------- | id | Name | Colour | ----------------------------- | 1 | this | red | | 4 | that | red | | 2 | stuff | orange | | 5 | nonsense | orange | | 3 | whatever | yellow | | 6 | etc | yellow | ----------------------------- SELECT ot.Id, ot.Name, ot.Colour FROM OtherTable ot INNER JOIN Colours c on c.Name = ot.Colour ORDER BY c.KeyValue