mysql - 如何在 GROUP_CONCAT 中使用选择别名?
问题描述
- 我平均 4 列并给出别名
score
。 - 现在,我正在尝试
score
在 GROUP_CONCAT 中使用别名来获取rank
. - 一切正常,除非我添加
(SELECT GROUP_CONCAT( score ORDER BY score DESC) FROM math )) AS rank
. - 我知道它不起作用,因为表
score
中不存在math
。但我需要做些什么才能让它发挥作用?
这是我在 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');
- 我从上面的查询中得到 500 服务器错误。
- 我期待低于输出
{
"id": 38,
"score": 99.24250030517578,
"rank": 1
},
{
"id": 51,
"score": 84.88500213623047,
"rank": 2
},
{
"id": 204,
"score": 69.27500057220459,
"rank": 3
}
]```
解决方案
试试这个作为您的查询。我把它改成 checl 也得分
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
正如我所说,一些数据作为试验场会很好
推荐阅读
- flutter - 如何在背景打开/关闭颤动期间更改 AppBar 文本
- ocaml - OCamlbuild 递归构建依赖项
- javascript - localStorage onload 显示我选择的 div?
- chatbot - 从 Watson 聊天机器人全屏播放视频
- php - 在 gitlab 中集成 phpdoc 用于自动生成文档
- python-2.7 - 如何在python中定义函数的子类型?
- python - 根据时间戳和不同位置创建会话
- c# - 具有延迟执行和 SQL 端分组的 EF Core Group By
- ios - 我应该在这里使用完成处理程序吗?如果是这样,如何最好地做到这一点?
- python - 部署到 Heroku 时找不到满足要求 anaconda-client==1.6.14 错误的版本