如何讓三個欄位值依語意排序?
到iT邦幫忙
irukawa(IT邦初學者8級)發問:
資料庫的某欄位有「Easy」、「Normal」、「Hard」這三種值,如何透過SQL語法,讓這三種值依難易程度排序?
oxox(IT邦初學者9級):
我會用下例的語法來作排序:
select id,name,type,
case when type='easy' then '1 easy'
when type='normal' then '2 normal'
when type='hard' then '3 hard' end as typesorting
from DB_Table_Name
order by typesorting
timeriver(IT邦初學者10級):
直接把資料表的Easy、Normal、Hard,將上述字元分別取代成「1、2、3」或「A、B、C」,這樣在執行SQL語法時會比較快。
old7ada(IT邦初學者9級):
當資料量大時,用case的語法去運算會變慢。而透過join資料表再排序,也會犧牲效能。
先在原資料表新增一欄位(長度設1,減少儲存空間),可先任意指定一個預設值,再用update語法將Easy設為1,Normal設為2、Hard設為3,再針對該欄位設定Index,以後即可直接查詢。如此一來,就算將來資料增加,回應的速度也不會差太多。
另一個方式,是直接用「1、2、3」取代「Easy、Normal、Hard」 的欄位,並將該欄位的長度改小,再建Index。之後再另外建立一個資料表,將兩者對應,作為備忘錄。
SuperGy(IT邦初學者10級):
我會建立一個存放這三個值的表格(假設為MyType),如下表:
再透過「join」語法利用MyType.id作排序即可。
熱門新聞
2025-01-10
2025-01-13
2025-01-10
2025-01-10
2025-01-10
2025-01-10