mar*_*zar 6 php mysql doctrine doctrine-orm
我在 Doctrine 中有以下 SELECT 子句(查询本身是使用查询构建器创建的):
u.username,
MAX(p.score) as highscore,
SUM(pc.badgeCount) as badgeCount,
(SUM(pc.badgeCount) / :badgeSum) AS probability,
(-LOG(RAND()) * probability) as weight
Run Code Online (Sandbox Code Playgroud)
(p是主实体的别名,pc是连接实体)
这给了我来自 MySQL 的错误消息:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'probability' in 'field list'
Run Code Online (Sandbox Code Playgroud)
如何在同一个 SELECT 子句中重用创建的别名?
我不会称之为“重用”。相反,我将其称为“使用”。
GROUP BY在、HAVING和ORDER BY子句之前不能使用别名。
另一种方法可能是使用 @variable:
u.username,
MAX(p.score) as highscore,
SUM(pc.badgeCount) as badgeCount,
@prob := (SUM(pc.badgeCount) / :badgeSum) AS probability,
(-LOG(RAND()) * @prob) as weight
Run Code Online (Sandbox Code Playgroud)
“AS”部分仍然提供用于显示和后面的子句的列名称。同时,@prob提供“立即”值。
我说“可能”是因为我认为@variables 的这种使用将会消失。SELECT标准中元素的评估顺序可能是“未定义”的。上面显示的用法取决于要按词汇顺序完成的元素。
| 归档时间: |
|
| 查看次数: |
518 次 |
| 最近记录: |