2
我試圖從小型員工數據庫(使用歸檔中較舊的記錄)中刪除一些舊記錄。在Oracle DBMS中使用to_date子查詢刪除
數據庫的相關表格結構如下:
員工 {僱員,FamilyName,中間名,給定名稱,地址,郊區,國家, 郵編}
費用 {費用號,經理ID,僱員ID,寄存日期}
EmployeeID是費用中的FK 關係。 LodgementDate格式爲MM-DD-YYYY。
編寫以下似乎只是刪除(測試)數據庫中的所有記錄,而不是那些比年長的(甚至匹配)日期:
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,但它仍然刪除所有記錄(這是測試牀)。
非常感謝。我在數據庫的ORM(web-dev)方面花了很多時間,而不是使用原始SQL,所以語法偶爾會吸引我。 – elithrar
+1好答案。僅供參考,替代方法是從患者那裏刪除病例(在治療日期= to_date('01 -JAN-07','DD-MON-YY')的帳戶中選擇patient_id)''可以在這種情況下更好。參見[本討論](http://www.techrepublic.com/article/oracle-tip-understand-the-difference-between-in-and-exists-in-subqueries/5297080)。表現很重要時很有意思。 –