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 サイトの他の関連記事を参照してください。