2
古い従業員データベースから古いレコードをアーカイブ内の古いレコードから削除しようとしています。Oracle DBMSでto_dateサブクエリを使用して削除
員 {社員、FamilyNameで、MiddleName、GIVENNAME、住所、郊外、州、郵便番号 }
経費 {:
DBの関連するテーブルは、次の構造を有しますExpenseNo、ManagerID、EmployeeID、LodgementDate}
従業員IDは経費のFKです関係。 LodgementDateの形式はMM-DD-YYYYです。
次のことを書くことだけで(テスト)DB内のすべてのレコードを削除しているようだ、とより古い(あるいはマッチング)されていないもの日:
DELETE FROM employee
WHERE EXISTS
(SELECT *
FROM employee, expense
WHERE employee.employeeid= expense.employeeid
AND lodgementdate = to_date('08-01-2007', 'MM-DD-YYYY'));
私が持っているレコードがあることを知っていますその正確なLodgementDateは、それでもすべてのレコードを削除します(これはテストベッドです)。
ありがとう。 DBのORM(web-dev)側では、生のSQLよりも多くの時間を費やすため、構文が時々私を捕まえることになります。 – elithrar
+1良い答え。しかし、FYIでは、patient_idがpatient_idの代わりにpatient_idが選択されています(この場合、treatmentdate = to_date('01 -JAN-07 '、' DD-MON-YY '))。 [このディスカッション](http://www.techrepublic.com/article/oracle-tip-understand-the-difference-between-in-and-exists-in-subqueries/5297080)を参照してください。パフォーマンスが重要なときに興味深い。 –