我在資料庫中有一個屬性,我想通過將其排序為 ASC 或 DESC 來使用過濾器。我希望元素的順序是
highest
high
medium
low
lowest
使用 ASC$q->orderBy('priority', 'ASC');給出的結果是
high
highest
low
lowest
medium
我該怎么做才能按該順序對元素進行排序?謝謝
uj5u.com熱心網友回復:
您可以使用以下case陳述句order by:
order by
case column_name
when 'highest' then 5
when 'high' then 4
when 'medium' then 3
when 'low' then 2
when 'lowest' then 1
end desc
所以這樣的事情應該有效:
$q->orderByRaw("case column_name
when 'highest' then 5
when 'high' then 4
when 'medium' then 3
when 'low' then 2
when 'lowest' then 1
end desc");
uj5u.com熱心網友回復:
可能明智的做法是使用數值來表示這些值,而不是按字面意思將文本存盤在列中。
然后使用數字排序將是微不足道的ORDER BY。
您可以單獨使用查找表來將 ID 與單詞匹配。
uj5u.com熱心網友回復:
MySQL 也有FIELD這個用例的便利功能:
$q->orderBy(DB::raw("FIELD(priority,'highest', 'high', 'medium', 'low', 'lowest')"))
FIELD 以數字形式回傳其余引數中第一個引數的索引。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/418510.html
標籤:
上一篇:使用GluonhqConnect.Provider.RestClient查詢ElasticSearch正文
下一篇:以下資料輸入的SQL查詢
