如何正确将tblCounty的CountyID填充至tblCity的CountyID_fk字段?
解决方案:将tblCounty的CountyID填充到tblCity的CountyID_fk字段
你的核心问题是误用了INSERT语句(用于新增数据行),但实际需求是更新tblCity表中已有记录的CountyID_fk字段,同时原语句中的子查询未与外层表关联,导致返回多条结果触发错误。以下是两种可行的修改方案:
方案1:使用JOIN批量更新(推荐,效率更高)
通过JOIN关联两张表,直接匹配对应关系并更新:
UPDATE c SET c.CountyID_fk = ct.CountyID FROM tblCity c INNER JOIN tblCounty ct ON ct.CountyTitle = c.CountyTitle
方案2:使用关联子查询更新
通过关联子查询为每一行匹配对应的CountyID,同时用WHERE EXISTS避免更新无匹配的记录(防止CountyID_fk被设为NULL):
UPDATE tblCity SET CountyID_fk = ( SELECT ct.CountyID FROM tblCounty ct WHERE ct.CountyTitle = tblCity.CountyTitle ) WHERE EXISTS ( SELECT 1 FROM tblCounty ct WHERE ct.CountyTitle = tblCity.CountyTitle )
错误原因说明
- 误用INSERT语句:你的需求是填充已有记录的字段,而非新增行,因此必须使用
UPDATE而非INSERT。 - 子查询未关联外层表:原语句中的子查询返回了所有匹配的CountyID集合,而非对应单条City记录的单个值,因此触发"子查询返回多个值"的错误。
内容的提问来源于stack exchange,提问作者mechanize
相关产品推荐
相关产品推荐

