ホームページ > データベース > mysql チュートリアル > 列が存在するにもかかわらず、SQL クエリが「列が存在しません」エラーで失敗するのはなぜですか?

列が存在するにもかかわらず、SQL クエリが「列が存在しません」エラーで失敗するのはなぜですか?

Linda Hamilton
リリース: 2025-01-13 08:11:42
オリジナル
121 人が閲覧しました

Why Does My SQL Query Fail with a

SQL クエリ エラー「列が存在しません」のトラブルシューティング

SQL クエリを実行すると、「列が存在しません」エラーが発生する場合があります。これは、テーブルの定義に列が存在するように見える場合に特に不可解です。

サンプルシーン

次のクエリを考えてみましょう:

<code class="language-sql">select sim.id as idsim, 
       num.id as idnum 
from main_sim sim 
  left join main_number num on (FK_Numbers_id=num.id);</code>
ログイン後にコピー

このクエリは、FK_Numbers_id 外部キー関係に基づいて、2 つのテーブル main_sim と main_number からデータを取得しようとします。ただし、クエリを実行すると、次のエラーが表示されます:

<code>ERROR:  column "fk_numbers_id" does not exist</code>
ログイン後にコピー

解決策

コマンドd main_simを使用してテーブル定義を確認すると、クエリで指定されたfk_numbers_idではなく、FK_Numbers_idという名前の列が存在することがわかります。

<code class="language-sql">dbMobile=# \d main_sim

...
FK_Numbers_id   | integer               | </code>
ログイン後にコピー

説明

この場合、テーブル定義で二重引用符が使用されているため、列名では大文字と小文字が区別されます。したがって、クエリ内の列参照でも二重引用符を使用して、列名の大文字と小文字を正確に一致させる必要があります。

クエリを修正しました

この問題を解決するには、クエリを次のように変更してください:

<code class="language-sql">select sim.id as idsim, 
       num.id as idnum 
from main_sim sim 
  left join main_number num on ("FK_Numbers_id" = num.id);</code>
ログイン後にコピー

この修正されたクエリでは、LEFT JOIN 句の列名を二重引用符で囲んで、テーブル定義との正確な一致を保証します。列名の大文字と小文字が正確に一致するように列参照を調整することで、クエリが正常に実行されるようになります。

以上が列が存在するにもかかわらず、SQL クエリが「列が存在しません」エラーで失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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