[英]Update from subquery SQL Server 2008
我有tblPatient表中的县名和州名。 我有一个县名和州名的查找表,我正在尝试规范我的tblPatient,它的结构是
可以想象,不同的州有时会共享县名。 为了解决这个问题,我正在使用查询
select patientid, admissionDate, dischargeDate, patientState, patientCounty
from tblPatient
where patientState='AL'
我想将tblPatient.patientCounty
更新为等于tblStateCounties.countyCode
,其中patientCounty和countyName是相同的。
我还没有使用如何使用rollback
的虚拟版本,但这看起来对我来说是正确的,但我不想承诺可能是愚蠢的错误。
update tblPatient
set tblPatient.patientCounty=tblStateCountes.countyCode
from
(
select patientID, admissionDate, dischargeDate, patientState, patientCounty from tblPatient
where patientState='AL'
) as t
inner join on tblStateCounties.countyName=tblPatient.countyName
你写的查询不会解析(你可以很容易地检查),因为你在子查询中缺少FROM子句。你还需要在t.tblPatient
上加入你也需要你的主要tblPatient FROM子句。
您可以使用以下查询来更新表格。
UPDATE tblPatient
SET tblPatient.patientCounty = tblStateCounties.countyCode
FROM tblPatient
INNER JOIN tblStateCounties
ON tblStateCounties.countyName = tblPatient.patientCounty
WHERE patientState = 'AL'
AND tblStateCounties.stateCode = '01';
您会注意到我删除了子查询并使用了一个简单的where子句。 由于您注意到县可以共享名称,因此您还需要过滤tblStateCounties.stateCode
还要考虑将StateNames的表映射到StateCode(如果你还没有)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.