【问题标题】:Update more records with stored procedure使用存储过程更新更多记录
【发布时间】:2013-07-05 09:33:27
【问题描述】:

我将以下记录从 excel 导入数据库。记录数为 5,00,000。

EmpIdNameCityCityId

1RameshLA?

2KumarNewYork?

我需要从其他表中获取 CityId 并插入到这个CityId

另一个表有城市的别名和cityId

CityIdAliasName

1LA

1LosAngels

1Los Angels

1LA(USA)

我想调用一个存储过程来更新所有 500000 条记录,因为函数不能用于 UPDATING 记录。

我需要为 Alias Table 中的每个员工更新 CityId 字段

【问题讨论】:

  • 这是您必须定期执行的操作还是只需执行一次?如果只需要一次,甚至不需要创建存储过程,运行一次脚本就足够了。你使用什么样的数据库? Sql 服务器?
  • 您对效率有什么顾虑?您尝试过什么,为什么还不够好?对我来说,这看起来像是两个表之间的一个非常简单的连接。 City / AliasName 列上的索引几乎肯定会提高性能。

标签: c# sql sql-server sql-server-2008


【解决方案1】:

你可以这样做:

     update employee
     set cityid = b.cityid
     from employee as a inner join city as b on a.city = b.aliasname

【讨论】:

    【解决方案2】:

    希望对你有所帮助。

    UPDATE UserDetails
    SET UserDetails.CityID = City.ID
    FROM City
    WHERE City.AliasName = UserDetails.City
    

    【讨论】:

      【解决方案3】:

      City 设置为外键比添加冗余数据列更容易吗?

      要回答您的问题,您可以通过运行以下查询来实现。如果需要偶尔运行,你也可以把它做成一个存储过程。

      UPDATE Employees SET CityId = (Select CityId FROM Cities where AliasName = City)
      

      【讨论】:

        【解决方案4】:

        以下查询将更新所需数据:

        UPDATE Employees SET CityId = ISNULL((Select CityId FROM Cities where AliasName = City),0)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-10-28
          • 1970-01-01
          相关资源
          最近更新 更多