[ Oracle ] 『ORA-00918: 列の定義が未確定です』 が発生するケース

Pocket

ちょいちょい登場するこのエラーですが、どのような場合に出力されるか簡単なサンプルになります。SQL を正しく理解していれば原因の特定は比較的容易だと思われます。

「ORA-00918: 列の定義が未確定です。」は以下のような場合に発生します。言葉が堅苦しいのでわかりにくいですが、エラーメッセージそのものです。

スポンサーリンク

ケース1

select
   t1.id
  ,t2.id
from
  table1 t1
 ,table2 t2
where
 id = 'XXXX'

where句で指定したカラム id が、table1 のものか table2 のものかわからないために発生します。 id ではなく、t1.id または t2.id のように指定する必要があります。

ケース2

select
    *
from
  (
    select
         man as person
        ,women as person
    from
        table3
  )
where
    person = 'saitou'

エイリアスを同一名で指定したため、where 句の person がどちらかのカラムか特定できないために発生します。エイリアスを異なるもので指定する必要があります。

スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *