【问题标题】:SQL Where Not Exists Containing Multiple Arguments不存在包含多个参数的 SQL
【发布时间】:2015-10-16 23:25:37
【问题描述】:

我正在尝试编写一个查询来检索仅存在于一个表中的数据,我还有其他需要解决的参数我已经研究了语法,但我不明白为什么我的其他参数没有被使用。对不起,如果这篇文章似乎相当缺乏经验,我只使用 SQL 一个月。

/*List the patient id, primary diagnosis and attending physician id for current admissions (no discharge date) in ICU 
who haven't had an encounter with their attending physician.*/


PRINT 'GROUP 5 SELECT A';
PRINT '';

SELECT Admissions.PatientID, Admissions.PrimaryDiagnosis, Admissions.AttendingPhysicianID
FROM Admissions
WHERE NOT EXISTS 
   (SELECT *
    FROM Encounters
    WHERE (Admissions.PatientID = Encounters.PatientID)) And (Admissions.DischargeDate is NULL) And (Admissions.NursingUnitID = 'ICU');

【问题讨论】:

  • 我怀疑条件 (Admissions.DischargeDate is NULL)(Admissions.NursingUnitID = 'ICU') 是否应该在子选择中,但我不确定,因为很难弄清楚逻辑应该是什么。
  • 如何编写语法以将它们放在子选择之外?
  • 删除最后一个),放在(Admissions.PatientID = Encounters.PatientID) 之后。
  • 我编辑了我的代码并删除了加入,因为我意识到我可以只使用招生表中的 PhysicianID,我相信你的解决方案解决了我的问题,但奇怪的是现在我收到的结果为零。

标签: sql where exists


【解决方案1】:

根据您的描述,我猜您需要匹配患者和医生。像这样的:

SELECT a.PatientID, a.PrimaryDiagnosis, a.AttendingPhysicianID
FROM Admissions a
WHERE NOT EXISTS (SELECT 1
                  FROM Encounters e
                  WHERE a.PatientID = e.PatientID AND
                        a.AttendingPhysicianID = e.PhysicianID
                 ) And
      a.DischargeDate is NULL And a.NursingUnitID = 'ICU';

请注意,表别名使查询更易于编写和阅读。

【讨论】:

  • 我真的很喜欢表格别名,我一定会查找的,谢谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2014-03-15
  • 1970-01-01
  • 2011-10-04
  • 2013-04-07
  • 1970-01-01
  • 1970-01-01
  • 2018-04-20
  • 2013-10-14
相关资源
最近更新 更多