不存在包含多个参数的 SQL
Posted
技术标签:
【中文标题】不存在包含多个参数的 SQL【英文标题】:SQL Where Not Exists Containing Multiple Arguments 【发布时间】: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,我相信你的解决方案解决了我的问题,但奇怪的是现在我收到的结果为零。
【参考方案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';
请注意,表别名使查询更易于编写和阅读。
【讨论】:
我真的很喜欢表格别名,我一定会查找的,谢谢您的帮助!以上是关于不存在包含多个参数的 SQL的主要内容,如果未能解决你的问题,请参考以下文章
急急急,Sql查询一个字段是不是存在某一个值,怎么写查询语句?
SQL Server 中的存储过程,它采用表值参数并插入不存在的并返回存在的