ホームページ > データベース > mysql チュートリアル > MySQL クエリの「フィールド リストの列 'id' があいまいです」を解決する方法は?

MySQL クエリの「フィールド リストの列 'id' があいまいです」を解決する方法は?

Susan Sarandon
リリース: 2025-01-19 18:41:11
オリジナル
808 人が閲覧しました

How to Resolve

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

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