簡體   English   中英

如何在 GROUP_CONCAT 中使用選擇別名?

[英]How do I use select alias inside GROUP_CONCAT?

  1. 我平均 4 列並給出別名score
  2. 現在,我試圖在 GROUP_CONCAT 中使用score別名來獲得rank
  3. 一切正常,除非我添加(SELECT GROUP_CONCAT( score ORDER BY score DESC) FROM math )) AS rank
  4. 我知道它不起作用,因為math表中不存在score 但是我需要做什么才能讓它發揮作用?

這是我在 laravel 5.5 中的查詢 -

$ranking = DB::select('SELECT id, (a.addition_accuracy + a.subtraction_accuracy + a.multiplication_accuracy + a.division_accuracy)/4 as score, (SELECT GROUP_CONCAT( score ORDER BY score DESC) FROM math )) AS rank FROM math a where level = 5');

  1. 我從上面的查詢中得到 500 服務器錯誤。
  2. 我期待低於輸出
    {
        "id": 38,
        "score": 99.24250030517578,
        "rank": 1

    },
    {
        "id": 51,
        "score": 84.88500213623047,
        "rank": 2
    },
    {
        "id": 204,
        "score": 69.27500057220459,
        "rank": 3
    }
]```

試試這個為您的查詢。 我把它改成檢查分數

SELECT 
  id
  , (a.addition_accuracy + a.subtraction_accuracy + a.multiplication_accuracy + a.division_accuracy)/4 as score
  ,if(@score = score,@rank:= @rank,@rank:= @rank+1) as rank
  ,  @score := score
  FROM math a,(SELECT @rank :=0) b ,(SELECT @score :=0) c
  where level = 5
  ORDER BY score DESC
LIMIT 3

正如我所說,一些數據作為試驗場會很好

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM