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

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

Barbara Streisand
Barbara Streisandオリジナル
2024-11-12 14:53:02821ブラウズ

Why Does MySQL Throw an

MySQL: CONCAT 条件の「不明な列」エラーのトラブルシューティング

MySQL では、CONCAT 関数を使用して複数の値を 1 つの値に連結できます。単一の表現。ただし、関数を WHERE 句の条件として使用しようとすると、「不明な列」エラーが発生する場合があります。

問題の理解

エラーが発生する理由は次のとおりです。連結された値に割り当てられた別名 (firstlast など) は、クエリ内の有効な列として認識されません。これは、エイリアスがクエリの出力にのみ適用され、クエリ自体では使用できないことが原因です。

解決策

この問題を解決するには、次のようにします。考えられるアプローチは 2 つあります:

1.式の繰り返し:

エラーを回避する 1 つの方法は、WHERE 句で CONCAT 式を繰り返すことです:

SELECT neededfield, CONCAT(firstname, ' ', lastname) AS firstlast 
FROM users
WHERE CONCAT(firstname, ' ', lastname) = "Bob Michael Jones";

この方法により、連結された値が確実に正しく比較されます。希望の入力。

2.クエリのラップ:

または、元のクエリをサブクエリでラップし、内部クエリ内で連結された値のエイリアスを作成することもできます:

SELECT * FROM (
  SELECT neededfield, CONCAT(firstname, ' ', lastname) AS firstlast 
  FROM users
) AS base 
WHERE firstlast = "Bob Michael Jones";

この場合、エイリアス firstlast はサブクエリ内の連結された値に割り当てられ、それを外部クエリの条件として使用できるようにします。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。