我的查询是:
SELECT
offer,
(SELECT
AVG(offer)
FROM
project_bids
) as var1
FROM
`project_bids`
WHERE
offer > var1
它会导致“#1054 - 'where 子句'中的未知列 'var1'”错误。任何人都可以解释为什么会出现这个错误吗?(我知道工作 sql,但我想知道它为什么会失败)
我的查询是:
SELECT
offer,
(SELECT
AVG(offer)
FROM
project_bids
) as var1
FROM
`project_bids`
WHERE
offer > var1
它会导致“#1054 - 'where 子句'中的未知列 'var1'”错误。任何人都可以解释为什么会出现这个错误吗?(我知道工作 sql,但我想知道它为什么会失败)
这里提到了 SELECT 语句的子句的执行顺序:
除最后一个子句“ORDER BY”外,不能在任何子句中使用列的别名。
您必须将“var1”移出where
并将其放入having
语句中
该where
语句无权访问在 select 语句中创建的列
写如下:
选择报价,(SELECT AVG(offer) FROM project_bids) as var1 FROM project_bids
WHERE offer > (SELECT AVG(offer) FROM project_bids)