QA@IT

INSERTコマンドでエラー

3738 PV

@ITの記事「SQLでデータを操作する(副問合せを利用したINSERT/相関UPDATE/MERGE) (1/3)」についての質問です。

「副問合せを利用したデータのINSERT」
において

INSERT INTO my_emp(empno,ename,sal,deptno)
SELECT empno,ename,sal,deptno
FROM emp
WHERE sal >=2000;

を実行するとエラー
ORA-00904: "SAL": 無効な識別子です。
が返ってきます。
その手前のCREATE TABLEコマンドをもう一度実行すると「すでに存在するオブジェクトです」と返ってくるので、my_empが存在していないということはなさそうです。
よろしくお願いします。

回答

もしかしたら記事に誤植があるのかも...記事中のこの部分ですが、

CREATE TABLE my_emp
(empno number(22),
ename varchar2(10),
hiredate date,
deptno number(22),
dname varchar2(14)
);

本当はこんな感じじゃないでしょうかね(注意: salの型は想像です)。

CREATE TABLE my_emp
(empno number(22),
ename varchar2(10),
sal number(7, 2),
deptno number(22),
dname varchar2(14)
);

編集 履歴 (1)
  • DROP TABLE my_emp;
    を実行した後、修正案通りの内容を実行したらお手本通りの結果になりました!
    確かにテーブルを作成する命令にsalが含まれていないのは疑うべきでしたね(まだ構文を習っていなかったとはいえ)
    ご協力ありがとうございました。こちらで誤字として報告します。
    http://qa.atmarkit.co.jp/q/9581#note_5350
    -
  • 記事に誤植があり、ご迷惑をお掛け致しました。先ほど記事を修正いたしました。今後もご愛読のほど、よろしくお願いいたします。 -
  • 夜遅くまで対応ありがとうございます。今度ともよろしくお願いします。 -

salという項目が必要なのはmy_empではなくempです。

元記事のイメージをみると分かるようにempの中にはsalがあります。

empの用意の仕方は分かりませんがイメージ通りにempを用意するとよいです。

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。