1

我在表中有县名和州名的 tblPatient。我有一个县名和州名的查找表,我正在尝试规范化我的 tblPatient,它的结构是 在此处输入图像描述

可以想象,不同的州有时会共享县名。为了解决这个问题,我正在使用查询

select patientid, admissionDate, dischargeDate, patientState, patientCounty
from tblPatient
where patientState='AL'

我想更新tblPatient.patientCountytblStateCounties.countyCode患者县和县名相同的地方。

我还没有一个虚拟版本的使用方法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
4

1 回答 1

3

您编写的查询不会解析(您可以很容易地检查),因为您在子查询中缺少 FROM 子句。您还需要 JOINt.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(如果您还没有)

演示

于 2012-06-13T14:35:24.393 回答