ホームページ > データベース > mysql チュートリアル > MySQL の WHERE 句で列エイリアスを使用できないのはなぜですか?

MySQL の WHERE 句で列エイリアスを使用できないのはなぜですか?

DDD
リリース: 2025-01-22 08:06:12
オリジナル
294 人が閲覧しました

Why Can't I Use Column Aliases in MySQL WHERE Clauses?

MySQL の WHERE 句と列エイリアスの制限

MySQL の WHERE 句で列エイリアスを使用すると、「#1054 - 'IN/ALL/ANY subquery' に不明な列があります」というエラーが発生することがよくあります。この記事ではその理由を説明し、代替アプローチを提供します。

MySQL では、WHERE 句内の列名がテーブルの構造から直接取得されるか、ドット表記によって派生される必要があります。 列の別名、つまりクエリ処理中に割り当てられる一時的な名前は認識されません。

MySQL ドキュメントでは、これを明示的に禁止しています。 その理由はクエリの実行順序にあります。WHERE 句はエイリアスが割り当てられるに評価されます。 したがって、WHERE 句でエイリアスを使用すると、未定義の動作が発生します。

これを克服するには、HAVING 句を使用します。 この句は、グループ化と集計後に行をフィルタリングするように設計されており、計算列 (エイリアスを使用して作成された列など) でフィルタリングする場合に適しています。 フィルタリングにエイリアスが必要な状況では、HAVING 句でエイリアスを使用すると、実行可能な回避策が得られます。

以上がMySQL の WHERE 句で列エイリアスを使用できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート