我坚持使用这个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');
有人可以帮忙吗?
答案 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;)