DBAtlas · データベース運用アトラス

ORA-00918: column ambiguously defined(列の定義が曖昧)

Oracle

意味

クエリ内の複数のテーブルに同じ名前の列があり、テーブル/別名の接頭辞なしで使われているため、Oracle はどのテーブルに属するか判断できない。

原因

結合された両方のテーブルに同じ名前の列がある (例: 両方に ID)、その列が SELECT、WHERE、ORDER BY で修飾なし (接頭辞なし) で使われている。

対処方法

曖昧な列はすべてテーブル名または別名で修飾する: SELECT a.id, b.id FROM tableA a JOIN tableB b ON a.id = b.a_id; テーブルに短い別名を付け、すべての列に接頭辞を付けて可読性と明確さを高める。

DBAtlas で開く →

同じデータベースの他の項目