-1

というテーブルがありますcompany_emp。そのテーブルには、従業員に関連する 6 つの列があります。

  1. せっかちな
  2. エネーム
  3. ドブ
  4. ドジ、...

という別のテーブルがありますbday。その中で、列は 2 つしかありません。エンピッドとドブ。

私はこのクエリを持っています:

select empid, dob 
from company_emp 
where dob like '01/05/2011'

従業員のリストを表示します。

テーブルbdayでクエリしたのと同じ方法で、一部の従業員がリストされました。

company_empここで、日付が '01/05/2011' の従業員のテーブルを更新したいと考えています。

私は次のようなクエリを試しました:

update company_name a
 set dob = (select dob from bday b 
            where b.empid=a.empid 
              and to_char(a.dob,'dd/mm/yyyy') = '01/05/2011'}

次に、その行のすべてのレコードが null になります。このクエリを修正するにはどうすればよいですか?

4

1 に答える 1

1

company_name/emp テーブルのすべての行を更新しています。

相関サブクエリを使用して行が存在することを確認するか、主キーまたは一意のキーを bday.empid に配置してクエリを実行することでより効率的に修正できます。

update (
  select c.dob to_dob,
         d.dob from_dob
  from   company_emp c join dob d on (c.empid = d.empid)
  where  d.dob = date '2011-05-01')
set to_dob = from_dob

構文はテストされていません。

于 2013-05-12T08:56:55.877 に答える