我有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
答案 0 :(得分:3)
你写的查询不会解析(你可以很容易地检查),因为你在子查询中缺少FROM子句。你还需要加入t.tblPatient
而且你也需要需要在主要的FROM子句中使用tblPatient。
您可以使用以下查询更新表格。
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(如果你还没有那个)