mysql - 为什么不能在Where子句中使用定义变量

标签 mysql sql mysql-error-1054

我的查询是:

SELECT 
  offer, 
  (SELECT 
        AVG(offer) 
   FROM 
        project_bids
  ) as var1 
FROM 
  `project_bids` 
WHERE 
  offer > var1

它会导致“#1054 - 'where 子句' 中的未知列 'var1'”错误。有人可以解释为什么会出现这个错误吗? (我知道有效的sql,但我想了解它失败的原因)

最佳答案

这里提到了 SELECT 语句子句的执行顺序:

http://blog.sqlauthority.com/2007/06/14/sql-server-easy-sequence-of-select-from-join-where-group-by-having-order-by/

除了最后一个子句“ORDER BY”之外,任何子句中都不能使用列的别名。

关于mysql - 为什么不能在Where子句中使用定义变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4123886/

相关文章:

php - 从外部脚本访问 Joomla 2.5 以通过 id 获取文章

sql - 在 SQLite 上添加 ORDER BY 需要花费大量时间

mysql error 1054 列未被请求或不存在

MYSQL:错误 1054 - 未知列

mysql - 如何在 laravel 的 where 子句中使用 alized 列

php - 如何每秒自动更新mysql数据库?

MySQL SELECT 历史记录

php - MySQL 子查询无法循环数据

sql - 设置默认架构的问题

MySQL #1054 未知列