是否可以将已经计算的列重用于 MySQL 中的查询?

Dan*_*tos 4 mysql computed-column

我有一个带有复杂列的查询,我想在另一列中使用此列结果,例如:

SELECT ( /* Complex query */ ) as myValue, if( myValue > 10, "OK" , "" ) from table;
Run Code Online (Sandbox Code Playgroud)

但他的查询返回一个错误:

Error Code: 1054. Unknown column 'myValue' in 'field list
Run Code Online (Sandbox Code Playgroud)

如何重用已计算的字段?

Aki*_*ina 10

您可以使用用户定义的变量。

SELECT @temp := ( /* Complex query */ ) AS myValue, 
       IF ( @temp > 10, "OK" , "" )
FROM table;
Run Code Online (Sandbox Code Playgroud)

也许服务器需要初步的变量定义。如果是这样的话,

SELECT @temp := ( /* Complex query */ ) AS myValue, 
       IF ( @temp > 10, "OK" , "" )
FROM table, (SELECT @temp := 0) dummy;
Run Code Online (Sandbox Code Playgroud)

文档没有指定输出值计算的顺序,但实际上它总是与它们的写入顺序匹配。

  • 我在这里注册只是为了给你我的+1。谢谢!!! (2认同)