說我有一張關聯顏色的花朵圖表。是否有可能獲得鮮花名單,然後通過先訂購Yellow
,然後再訂購Blue
,然後訂購Red
。基本上,我想指定一個值列表並按這些值排序結果。可能?根據排序要求MySQL - 按某種不是ASC或DESC的順序排列
ORDER BY CASE column
WHEN 'Yellow' THEN 1
WHEN 'Blue' THEN 2
WHEN 'Red' THEN 3
END
說我有一張關聯顏色的花朵圖表。是否有可能獲得鮮花名單,然後通過先訂購Yellow
,然後再訂購Blue
,然後訂購Red
。基本上,我想指定一個值列表並按這些值排序結果。可能?根據排序要求MySQL - 按某種不是ASC或DESC的順序排列
ORDER BY CASE column
WHEN 'Yellow' THEN 1
WHEN 'Blue' THEN 2
WHEN 'Red' THEN 3
END
你可以使用FIND_IN_SET:
ORDER BY FIND_IN_SET(column, 'Yellow,Blue,Red')
..或在ANSI CASE語句。在查詢中,您可以使用ORDER BY sort_order ASC
我期待您要根據動態要求對它們進行排序,而不是明確提到這三種顏色。這將使您可以靈活地管理排序順序。
可以在顏色表中添加一個字段sort_order
,並提供價值:
我的選擇是使用FIELD(str, str1, str2, ...)
函數。
返回str1,str2,str3,...列表中 中str的索引(位置)。 如果未找到str,則返回0。
所以,你可以使用返回值命令結果的列表:
ORDER BY FIELD (color, 'Yellow', 'Blue', 'Red')
如果你想顛倒順序,只需添加DESC
。
如何添加一列有時需要訂購時解決問題(黃色,藍色,紅色),有時(藍色,黃色,紅色),有時(紅色,黃色,藍色),... – StackOverflowNewbie 2011-05-12 07:05:23
' sort_order'字段應該存儲您需要排序的層次結構。例如。 (藍,黃,紅), 藍色 - 1 黃色 - 2 紅色 - 3 當您想要排序(紅色,黃色,紅色)時,顏色值和'sort_order'藍色) 藍色 - 3 黃色 - 2 紅色 - 1 這將幫助您在不編輯php代碼的情況下修改排序順序。在更高端,您提供了一個Web配置來管理頁面中的排序順序,以便用戶/管理員想要更改順序時。這是如何在高端網站上處理的。 – 2011-05-12 08:14:47