MySQL クエリのあいまいな 'id' 列への取り組み
列名 (「id」など) を共有する複数のテーブルを操作すると、「フィールド リストの列 'id' があいまいです」という恐ろしいエラーが発生することがよくあります。これは、クエリでソース テーブルを指定せずに 'id' 列を選択した場合に発生します。
MySQL は 2 つの明確なソリューションを提供します。
1.明示的なテーブルの名前付けまたはエイリアス
明確に識別できるように、「id」列の先頭にテーブル名を付けます:
<code class="language-sql">SELECT tbl_names.id, tbl_section.id, name, section FROM tbl_names, tbl_section WHERE tbl_names.id = tbl_section.id;</code>
2. 推奨される方法: ANSI-92 JOIN 構文
このアプローチでは、エイリアスを使用して、よりクリーンで読みやすいコードを実現します。
<code class="language-sql">SELECT n.id, s.id, n.name, s.section FROM tbl_names n JOIN tbl_section s ON s.id = n.id;</code>
ここで、「n」と「s」はそれぞれ tbl_names
と tbl_section
のエイリアスです。 これにより曖昧さがなくなります。
ベスト プラクティス: エイリアスを採用する
エイリアス (方法 2) を使用することを強くお勧めします。これにより、特に同じテーブルを複数回使用する場合に、よりコンパクトでわかりやすいクエリが得られます。
ANSI-92 JOIN を選択する理由
MySQL は依然として古い ANSI-89 JOIN 構文 (カンマ区切りのテーブル リストで暗黙的に使用される) をサポートしていますが、ANSI-92 の方が優れています。 ANSI-89 にはない機能である OUTER 結合 (LEFT、RIGHT、FULL) の重要なサポートを提供します。 MySQL は ANSI-89 との下位互換性を維持していますが、明確さと機能性を向上させるには、最新の ANSI-92 標準を採用することがベスト プラクティスです。
以上がMySQL クエリの「フィールド リストの列 'id' があいまいです」を解決する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。