ホームページ > データベース > mysql チュートリアル > SQL SELECT * クエリの ORA-00918:「列があいまいに定義されています」を解決するにはどうすればよいですか?

SQL SELECT * クエリの ORA-00918:「列があいまいに定義されています」を解決するにはどうすればよいですか?

DDD
リリース: 2025-01-13 21:24:47
オリジナル
103 人が閲覧しました

How to Resolve ORA-00918:

*Oracle エラー ORA-00918: SELECT ステートメント内のあいまいな列の解決**

同じ名前の列を持つ複数のテーブルを含む SELECT * クエリを実行すると、ORA-00918 エラー「列があいまいに定義されています」が発生することがよくあります。このあいまいさは、複数のテーブルが列名を共有する場合、データベースがどのテーブルの列を取得するかを決定できないために発生します。

次の例を考えてみましょう:

<code class="language-sql">SELECT *
FROM
  (SELECT DISTINCT(coaches.id),
    people.*,
    users.*,
    coaches.*
  FROM "COACHES"
  INNER JOIN people ON people.id = coaches.person_id
  INNER JOIN users ON coaches.person_id = users.person_id
  LEFT OUTER JOIN organizations_users ON organizations_users.user_id = users.id
) WHERE rownum <p>To correct this, replace the ambiguous `SELECT *` with a specific column selection.  For instance:</p><p>Instead of selecting all columns (`SELECT *`), explicitly list the desired columns and use aliases to resolve ambiguity:</p>SELECT
  coaches.id AS COACHES_ID,
  people.name,
  users.email,
  coaches.team
FROM ...  -- Rest of your query remains the same

This approach assigns unique aliases (e.g., `COACHES_ID`) to each selected column, eliminating the ambiguity.  Alternatively, omit duplicate columns entirely, selecting only the necessary data.

Best practice dictates avoiding `SELECT *` in production SQL.  Explicitly defining columns enhances code clarity, maintainability, and reduces the risk of errors caused by ambiguous column names.</code>
ログイン後にコピー

以上がSQL SELECT * クエリの ORA-00918:「列があいまいに定義されています」を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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