如何动态创建数据库表并插入查询选择的数据

时间:2012-12-14 12:07:36

标签: asp.net sql database

我正在网站上工作,我需要在分数的基础上找到用户的等级。之前我正在通过SQL查询计算用户的得分和排名。

select * from (
    select
        usrid,
        ROW_NUMBER()
        OVER(ORDER BY (count(*)+sum(sup)+sum(opp)+sum(visited)*0.3) DESC) AS rank,
        (count(*)+sum(sup)+sum(opp)+sum(visited)*0.3 ) As score
    from [DB_].[dbo].[dsas]
    group by usrid) as cash
where usrid=@userid

请不要专注于查询,因为这只是为了解释我如何选择数据。

问题:现在我无法使用上述查询,因为每次使用排名时都需要从dsas表中选择排名,dsas表的数据会逐日增加并减慢我的网站速度

我需要的是通过上面的查询选择数据并插入另一个名为score的表中。我们可以这样做吗?

1 个答案:

答案 0 :(得分:2)

更好的解决方案是在您的用户表中包含score作为字段,或者为分数设置单独的表。每当您为用户添加新的supoppvisited数据时,也会在当时重新计算其得分。

然后,为了获得排名最高的用户,您将能够执行非常简单的select语句,按分数降序排序,并且只能获取所需的行数。它会非常快。