T1とT2の2つのテーブルを作成し、それぞれabcとxyzの1つの列を作成しました。各テーブルに2行(数値1と2)を挿入しました。
コマンドを実行する"select abc from t2"
と、列abcがテーブルT2に存在しないというエラーがスローされます。ただし、コマンドを実行すると"delete from t1 where abc in (SELECT abc from t2);"
、2行が削除されます。
サブクエリで失敗したのと同じステートメントを使用したので、削除は失敗するべきではありませんか?
テーブルt1(abc番号)を作成します。-作成されたテーブル
テーブルt2(xyz番号)を作成します。-作成されたテーブル
t1値に挿入します(1); --1行挿入
t1値に挿入します(2); --1行挿入
t2値に挿入します(1); --1行挿入
t2値に挿入します(2); --1行挿入
t2からabcを選択します。--ORA-00904->列abcがt2に存在しないため
t1から削除します。ここでabcin(SELECT abc from t2); --2行が削除されました