从相关表中选择一条重要记录

时间:2015-10-12 21:49:29

标签: sql sql-server select join

我有一张包含 <div id="npsvalue" style="margin-bottom: -24px;"> <input id="Q1689" name="Q1689" class="tsc_buttons2 black npsoption" type="button" value="0"> <span class="mincircle" style="background-color: #EA0F0F;"></span> </div> <div id="npsvalue" style="margin-bottom: -24px;"> <input id="Q1689" name="Q1689" class="tsc_buttons2 black npsoption" type="button" value="1"> <span class="mincircle" style="background-color: #EA0F0F;"></span> </div> . . . <div id="npsvalue" style="margin-bottom: -24px;"> <input id="Q1689" name="Q1689" class="tsc_buttons2 npsoption lightgrey active" type="button" value="6"> <span class="mincircle" style="background-color: #DEDC21;"></span> </div> 的表格和一张包含customers的表格。

在customers表中,cities与cities表的city_id相关。

表格中的其他字段

id_city

问题在于我有成千上万的客户记录与customers: name, surname cities: ext_code, description, address_code 不存在的城市有关。

其他地方的城市表包含大量重复记录;在重复的集合中,只有一条记录具有有效的ext_code

问题是:将ext_code替换为包含有效city_id的{​​{1}}。评估组城市的唯一字段是id_cityext_code

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

如果

  

仅评估组城市的字段是address_code或   描述

那么这就是你在过滤掉你提到的非“有效ext_code”时应该用来加入数据的东西。

答案 1 :(得分:0)

以下是对客户进行一次性更新的粗略方法。 您需要调整代码以使其适用于您的系统,但这应该很容易。

UPDATE    Customer
SET       CityID =
(
   --This bit will find cities that look like the one we already have, 
    SELECT TOP 1 CityID
    FROM         City AS X
    WHERE        X.AddressCode = City.AddressCode
    OR           X.Description = City.Description
    ORDER BY     X.ExtCode DESC --This puts nulls last!
)
FROM               Customer
INNER JOIN City ON City.CityID = Customer.CityID