0

私のクエリは次のとおりです。

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

「#1054 - 'where 句' の列 'var1' が不明です」というエラーが発生します。なぜそのエラーが発生するのか誰でも説明できますか? (私はSQLの動作を知っていますが、失敗する理由を知りたいです)

4

3 に答える 3

2

SELECTステートメントの句の実行順序は次のとおりです。

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

列のエイリアスは、最後の句「ORDERBY」以外の句では使用できません。

于 2010-11-08T12:48:49.000 に答える
1

「var1」を から移動して、ステートメントwhereに入れる必要がありますhaving

このwhereステートメントは、select ステートメントで作成された列にアクセスできません。

于 2010-11-08T12:43:52.767 に答える
0

以下のように書きます。

SELECT オファー (SELECT AVG(offer) FROM project_bids) as var1 FROM project_bidsWHERE offer > (SELECT AVG(offer) FROM project_bids)

于 2010-11-08T12:42:58.633 に答える