質問

このようなクエリを実行しようとしています

SELECT a, b , c, (SELECT INNULL(x,y)) as mycol WHERE mycol < 400 ;

しかし、エラーが発生します

#1054 - Unknown column 'mycol' in 'where clause'

これを行う正しい方法は何でしょうか?

ありがとう。

役に立ちましたか?

解決

それはとても入っています MS SQL, 、同じ問題があると思います MySQL.

変えてみてください どこ持っている. どこ 句では、名前を変更した列は表示されません。

持っている (mycol < 400 AND a > 5) のように、WHERE と同じように機能します。

グループ化 前にあるはずです 持っている.

リンク内の例を確認してください。

http://www.databasejournal.com/features/mysql/article.php/3469351/The-HAVING-and-GROUP-BY-SQL-clauses.htm

他のヒント

@hgulyan私はあなたの答えを疑います。それはWHERE句を使用してからの防止1は、むしろそれがサブクエリであることを名前の変更ではありません。だから私は、クエリを持って言うことができます:

SELECT id as ID FROM user WHERE ID > 10;

これは完全に細かい作業になるだろう。
今、私は1つの以上のクエリを持って言うことができます:

SELECT name, (SELECT id FROM user_detail WHERE user_id = 20) as ID FROM user WHERE ID > 19;

この特定のクエリがようなエラーが生成されます

  

不明のカラムID

だから、それはサブクエリとカラムのエイリアスだけでなく、カラムのエイリアスを使用してのことです。 したがって、この場合には、あなたはHAVINGの代わりWHEREを使用する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top