用于删除自2000年以来没有帐户的患者的SQL

时间:2016-10-16 21:32:14

标签: sql

我坚持使用这个SQL问题,我尝试了不同的方法来解决它,但我一直收到错误,并且#34; SQL删除自2000年以来没有帐户的患者。"

这些是表格:

Patient (PatientID, FamilyName, GivenName, Address, Suburb, State, PostCode)

Doctor (ProviderNo, Name)

Item (ItemNo, Description, Fee)

Account (AccountNo, ProviderNo, PatientID, Date)

AccountLine (AccountNo, ItemNo)

我写的代码是:

DELETE PatientID, Item.Date
FROM dtoohey.Patient
WHERE AccountLine.AccountNo = Account.AccountNo
AND Account.PatientID = Patient.PatientID
AND Date <=(TO_DATE('31-DEC-1999','DD-MON-YYYY');

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:3)

我会使用not exists来表达这一点:

delete patient p
    where not exists (select 1
                      from account a
                      where a.PatientID = p.PatientID and
                            a.date >= date '2000-01-01'
                     );

我已经使用Oracle语法表达了日期常量。大多数其他数据库支持ANSI标准YYYY-MM-DD格式,因此您只需删除date关键字。

答案 1 :(得分:0)

您也可以使用IN:

执行此操作
DELETE *
FROM Patient
WHERE Patient.PatientID IN
(SELECT PatientID
 FROM Account
 WHERE Account.date >= 10-01-2016)

答案 2 :(得分:0)

从患者处删除PatientID 在哪里存在(从账户选择1 WHERE Account.PatientID = Patient.PatientID AND Account.date&gt; =&#39; 2000-12-31&#39;)