My query is:
SELECT
offer,
(SELECT
AVG(offer)
FR开发者_如何学GoOM
project_bids
) as var1
FROM
`project_bids`
WHERE
offer > var1
It causes "#1054 - Unknown column 'var1' in 'where clause'" error. Can anybody expalain why gives that error ? (i know working sql but i want to learn why it fails)
The sequence of execution of clauses of a SELECT statement is mentioned here:
http://blog.sqlauthority.com/2007/06/14/sql-server-easy-sequence-of-select-from-join-where-group-by-having-order-by/
Alias of an column can not be used in any clause except the last clause "ORDER BY".
you would have to move "var1" out of the where
and put in it to a having
statement
the where
statement does not have access to columns created in the select statement
Write it as below:
SELECT offer, (SELECT AVG(offer) FROM project_bids) as var1 FROM project_bids
WHERE offer > (SELECT AVG(offer) FROM project_bids)
精彩评论