我在一张表中拥有超过1200万条记录,其中包含过去15年来的6000多种股票数据。我试图更新昨天的价格。请参阅下面的示例表。我能想到的唯一更新昨天价格的方法是使用脚本语言。我正在使用C#循环遍历所有记录。第一个循环是获取所有符号,第二个循环通过第一个循环中的每个符号,并从前一天更新昨天的价格。这需要很长时间。任何想法,新方法和其他加快过程的方法?
Symbol, todayis, price, yesterdayprice
---- --------- ------ ------
aapl, 5/13/2015, 123.59, 124.45
aapl, 5/12/2015, 124.45, 122.24
aapl, 5/11/2015, 122.24, don't know
aapl, 5/10/2015, 127.41, don't know
答案 0 :(得分:1)
您应该能够使用单个SQL语句进行此更新,如下所示:
UPDATE MyTable t
LEFT OUTER JOIN MyTable y
ON y.Symbol=t.Symbol AND t.todayis = subdate(y.todayis, 1)
SET a.yesterdayprice = COALESCE(y.price, 'don't know')
此UPDATE
尝试执行自我加入,匹配符号并通过subdate(y.todayis, 1)
计算昨天的日期(t
代表“今天”,y
代表“昨天“)。
找到相应的行后,COALESCE
会将更新的值提供给它。当行不存在时,'don't know'
字符串将用作默认值。