我有一個賣家名單,每個人都支付服務費。我想按降序顯示按年份分組的服務費。該組的年份應按降序排列。比如,我輸入了 2023、2020、2021 的資料。組資料應該先顯示 2023,然后是 2021,然后是 2020。首先我嘗試使用
$infos = Commision::all()->groupBy('country');
如果我先使用 order 它會顯示錯誤。我在這里有一個以前的問題。我試過的
$infos = DB::table('service_charges')->groupBy('year')->orderBy('year','DESC')->get();
dd($infos);
但它的顯示每組只有一個資料。我在這里保存了3 個資料。圖2是從2021,圖1是從2020年但是,查詢我展示從每個組只有一個資料此處。
uj5u.com熱心網友回復:
該GROUP BYSQL陳述句用于具有給定列的值相同的匯總資料。這意味著您只能獲得該列中每個不同值的資料的單個聚合結果(即在您的情況下每年一個值)。
groupBy如果它們具有相同的值,則集合用于將它們自己的集合中的所有資料分組。然而不同的是,groupBy在集合中運行后查詢所以你不能再orderBy在那個點上。您可以通過以下兩種方式解決您的問題:
- 在查詢中排序然后對結果集合進行分組
$infos = DB::table('service_charges')->orderBy('year','DESC')->get()->groupBy('year');
- 對結果集合進行排序和排序
$infos = Commision::all()->groupBy('country')->sortKeysDesc();
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/399643.html
上一篇:一項在資料庫中應用多項更改的請求
