私はこのようなクエリを実行しようとしています
SELECT a, b , c, (SELECT INNULL(x,y)) as mycol WHERE mycol < 400 ;
しかし、エラーが発生します
#1054 - Unknown column 'mycol' in 'where clause'
これを行う正しい方法は何ですか?
ありがとう。
私はこのようなクエリを実行しようとしています
SELECT a, b , c, (SELECT INNULL(x,y)) as mycol WHERE mycol < 400 ;
しかし、エラーが発生します
#1054 - Unknown column 'mycol' in 'where clause'
これを行う正しい方法は何ですか?
ありがとう。
それはMS SQLにあるので、同じ問題がMySQLにもあると思います。
WHEREをHAVINGに変更してみてください。名前を変更した列がWHERE句に表示されません。
HAVINGは、(mycol < 400 AND a > 5) のように、WHERE と同じように機能します。
GROUP BYはHAVINGの前に置く必要があります。
リンクの例を確認してください。
@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
ます。