我正在为大学工作并拥有PatientAdmissionsTbl
,它将所有患者入院都存储到各个病房,并且有一个DateDischarged
列,显示患者何时出院病房。
update dbo.PatientAdmissionsTbl
set DateDischarged = getdate()
where PatientID = @PatientID
and WardID = @oldWard
我使用此更新尝试更新表中符合这些条件的最后一行,我遇到的问题是它更新了患者和病房ID所在的所有行#39; s是(过去和现在)表中但是我不知道如何将其限制为更新匹配它的最后一行。
所以,我的问题是如何阻止所有行更新?
这是正在使用的表,第27-34行是重要的,当我尝试进行上面的更新时DateDischarged次数匹配,我想要的是当前时间和日期在最后一行匹配where子句和最后一行不是它上面的匹配...对不起,我不太确定如何正确地说这个
编辑:DateDischarged将为NULL,直到该患者出院,然后更新该表,并将当前日期和时间放在DateDischarged列中,其中patientid和wardid与where子句匹配
答案 0 :(得分:1)
添加:
and DateDischarged is null
到where子句似乎修复了它,我可能使这个声音比实际上更复杂。
答案 1 :(得分:0)
SQL Server中的一种方法是将TOP
与ORDER BY
一起使用。假设您希望记录最近的日期:
with topudate as (
select top 1 pa.*
from dbo.PatientAdmissionsTbl pa
where PatientID = @PatientID and WardID = @oldWard
order by DateDischarged desc
)
update toupdate
set WardId = @newWard; -- WHATEVER THE COLUMNS YOU WANT TO UPDATE WITH THEIR VALUES