• 締切済み

updateについて

下記、SQLコマンドを実行するとMERTINの歩合給がSMITHのSALに格納されません。実行後、NULLが入ってしまいます。 ちゃんとemp表のMERTINのCOMMには値が入っているのになぜ実行結果がうまくいかないのでしょうか? 回答のほどよろしくお願い致します。 update w_emp set sal = (select comm from emp where ename = 'MERTIN') where sal < 1000 SQL> select * from w_emp; DEPTNO EMPNO ENAME JOB SAL 20 7902 FORD ANALYST 3000 20 7369 SMITH CLERK 10行が選択されました。 SQL> desc w_emp; 名前 NULL? 型 DEPTNO NOT NULL NUMBER(2) EMPNO NOT NULL NUMBER(4) ENAME VARCHAR2(10) JOB VARCHAR2(9) SAL NUMBER(7,2) SQL> desc emp; 名前 NULL? 型 EMPNO NOT NULL NUMBER(4) ENAME VARCHAR2(10) JOB VARCHAR2(9) MGR NUMBER(4) HIREDATE DATE SAL NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NOT NULL NUMBER(2)

みんなの回答

  • raphel_7
  • ベストアンサー率34% (86/252)
回答No.2

情報が足りません。 SET NULL 'NULL' SELECT * FROM EMP; SELECT * FROM W_EMP; のすべての情報がないとわかりません

yukikundesuyo
質問者

お礼

回答ありがとうございました。 MERTIN→MARTINの間違いでした。 結果出力はきちんとしたのが出ました。 どうもお騒がせしました。

すると、全ての回答が全文表示されます。
回答No.1

sal<1000 という条件では、SAL列がnullのレコードを対象としません。 update w_emp set sal = (select comm from emp where ename = 'MERTIN') where sal < 1000 OR SAL IS NULL とすれば良いんじゃないですかね。

yukikundesuyo
質問者

補足

回答ありがとうございます。 結果は同じでした。 もし、分かりましたら回答のほどよろしくお願い致します。

すると、全ての回答が全文表示されます。