2

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

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

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

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

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

ありがとう。

4

2 に答える 2

3

それはMS SQLにあるので、同じ問題がMySQLにもあると思います。

WHEREHAVINGに変更してみてください。名前を変更した列がWHERE句に表示されません。

HAVINGは、(mycol < 400 AND a > 5) のように、WHERE と同じように機能します。

GROUP BYはHAVINGの前に置く必要があります。

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

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

于 2010-05-13T07:10:06.710 に答える
0

@hgulyan私はあなたの答えを疑います。WHERE句の使用を妨げるのは名前の変更ではなく、サブクエリです。だから私はクエリを持っているとしましょう:

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ます。

于 2016-10-12T06:29:10.187 に答える