MySQL中的别名列存在问题! 我的查询:
SELECT Price AS Pr, (Pr*10/100) FROM MyTable;
MySQL WorkBench错误:字段列表中未知列'Pr' !!!
我在W3Schools中测试了我的查询,没有错误!
答案 0 :(得分:1)
我在W3Schools中测试了我的查询,没有错误!
这并不能证明您的查询有效。
您只能在GROUP BY
,ORDER BY
或HAVING
条款中使用别名。不允许使用您的使用变体,因为当MySQL选择第2列时,别名的值是未知的。
答案 1 :(得分:0)
我怀疑W3Schools使用MS Access来运行用户查询,而MS Access确实允许这样的攻击,如在同一SELECT子句中定义的SELECT子句中引用列别名。
标准不允许这样做,MySQL在这种特殊情况下确实遵循标准。
至于问题的解决方案,我可以看到两个选项。
可能在任何SQL产品中运行的更通用的解决方案是使用派生表:
SELECT
Pr,
(Pr * 10 / 100) AS SomethingElse
FROM
(
SELECT
SomeComplexExpression AS Pr
FROM MyTable
) AS sub
;
另一种选择是使用一个特定于MySQL的变量:
SELECT
@Pr := SomeComplexExpression AS Pr,
(@Pr * 10 / 100) AS SomethingElse
FROM MyTable
;
最后,如果您需要测试/演示某些内容是否可以在MySQL中运行,我建议使用SQL Fiddle。