Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法访问Select语句(MySQL)中的别名列_Mysql_Sql_Select_Alias - Fatal编程技术网

无法访问Select语句(MySQL)中的别名列

无法访问Select语句(MySQL)中的别名列,mysql,sql,select,alias,Mysql,Sql,Select,Alias,我对MySQL中的别名列有问题! 我的问题是: SELECT Price AS Pr, (Pr*10/100) FROM MyTable; MySQL工作台错误:字段列表中的未知列“Pr” 我在中测试了我的查询,没有错误 我在W3Schools中测试了我的查询,没有错误 这并不能证明您的查询是有效的 您只能在分组依据、排序依据或具有子句中使用别名。不允许使用您的使用变量,因为MySQL在选择第二列时别名的值未知。我怀疑W3C使用MS Access运行用户查询,而MS Access确实允许在同一

我对MySQL中的别名列有问题! 我的问题是:

SELECT Price AS Pr, (Pr*10/100) FROM MyTable;
MySQL工作台错误:字段列表中的未知列“Pr”

我在中测试了我的查询,没有错误

我在W3Schools中测试了我的查询,没有错误

这并不能证明您的查询是有效的


您只能在
分组依据
排序依据
具有
子句中使用别名。不允许使用您的使用变量,因为MySQL在选择第二列时别名的值未知。

我怀疑W3C使用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中是否可以/不能工作,我建议使用。

您需要从MyTable访问原始名称为
选择Price AS Pr(Price*10/100)的列
我知道,但实际上我的第一列是类似于
SUM(Price1*Price2*Coef1*Coef2)
的,我想让它更简单!请不要将w3schools作为资源引用。见: