ホームページ > データベース > mysql チュートリアル > WHERE 句で列エイリアスを使用すると、MySQL が「#1054 - 不明な列」エラーをスローするのはなぜですか?

WHERE 句で列エイリアスを使用すると、MySQL が「#1054 - 不明な列」エラーをスローするのはなぜですか?

Susan Sarandon
リリース: 2025-01-22 08:27:09
オリジナル
324 人が閲覧しました

Why Does MySQL Throw a

MySQL WHERE 句と列エイリアス: 「#1054 - 不明な列」エラーのトラブルシューティング

WHERE 句内で列のエイリアスを使用すると、MySQL クエリで「#1054 - 'IN/ALL/ANY subquery' に不明な列 'guaranteed_postcode'」というエラーが発生することがあります。これは、実行中の列値の決定に矛盾が生じる可能性があるため、標準 SQL では WHERE 句でのエイリアスの使用が禁止されているためです。 WHERE 句が処理されるとき、データベースはまだエイリアスに値を割り当てていません。

MySQL マニュアルには、エイリアスは GROUP BY、ORDER BY、または HAVING 句でのみ有効であると明確に記載されています。 これらの句はデータ取得に動作し、エイリアスの可用性を保証します。

クエリでは、WHERE 句で SUBSTRING(locations.raw,-6,4) としてエイリアスされた guaranteed_postcode が使用されている可能性があります。 MySQL はカラム値が計算される前にエイリアスに遭遇するため、エラーが生成されます。

これを修正するには、HAVING 句 (集計関数または計算の場合) または WHERE 句内のサブクエリを使用します。 サブクエリは、メイン クエリの WHERE 句でエイリアスを直接使用することを回避し、MySQL のルールに違反することなく必要なフィルタリングを提供します。

以上がWHERE 句で列エイリアスを使用すると、MySQL が「#1054 - 不明な列」エラーをスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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