使用Oracle DBMS中的to_date子查询进行DELETE

时间:2011-09-12 00:11:53

标签: mysql

我试图从小型员工数据库中删除一些旧记录(存档中的旧记录)。

DB的相关表格具有以下结构:

  

员工 {EmployeeID,FamilyName,MiddleName,GivenName,Address,Suburb,State,   邮编}

     

费用 {ExpenseNo,ManagerID,EmployeeID,LodgementDate}

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,但它仍然会删除所有记录(这是测试床)。

1 个答案:

答案 0 :(得分:2)

从您存在的from子句中删除患者。

DELETE FROM patient
WHERE EXISTS
    (SELECT *
    FROM account
    WHERE patient.patientid = account.patientid
    AND treatmentdate = to_date('01-JAN-07', 'DD-MON-YY'));