【问题标题】:Choose one significant record from related table从相关表中选择一条重要记录
【发布时间】:2015-10-12 21:49:28
【问题描述】:

我有一张带有customers 的表格,还有一张带有cities 的表格。

在 customers 表中,city_id 与 citys 表的 id_city 相关。

表格中的其他字段

customers: name, surname
cities:    ext_code, description, address_code

问题是我有数千条与ext_code 不存在的城市相关的客户记录。

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

问题是:用包含有效ext_codeid_city 替换city_id。唯一要评估分组城市的字段是 address_codedescription

有什么建议吗?

【问题讨论】:

  • 欢迎来到 Stack Overflow。我删除了一些口音,因为它有点难以阅读。到目前为止,请分享您的代码。它使其他人能够更快地帮助您。

标签: sql sql-server select join


【解决方案1】:

如果

仅用于评估分组城市的字段是 address_code 或 说明

那么这就是您应该使用它来加入您的数据,同时过滤掉您提到的非“有效 ext_code”。

【讨论】:

    【解决方案2】:

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

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-02
      • 1970-01-01
      • 2016-03-06
      • 2011-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多