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

时间:2010-11-08 12:38:40

标签: mysql sql mysql-error-1054

我的查询是:

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

它会导致“where子句”中出现“#1054 - 未知列'var1'”错误。任何人都可以解雇为什么会出现这个错误? (我知道工作sql但我想知道它失败的原因)

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

您必须将“var1”移出where并将其放入having语句

where语句无权访问在select语句中创建的列

答案 2 :(得分:0)

写如下:

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