2017-04-08 32 views
1

我已经尝试了几种不同的查询,似乎无法找到一个没有导致错误SQL查询表更新值到另一个表,其中ID的比赛

附近有语法错误关键字的工作总结属性''

我有一个名为Scores的表格,它保存用户ID,星期编号和测验中的星期得分。

架构:

  • 分数(ID,用户名,weekNumber,currentScore)

总共有12周,所以最后的每​​个用户将具有在此表中12个条目

我有另一个表Leaderboard有架构:

  • 排行榜(Id,userName,week1,week2,week3 ..... week12,totalScore)

每个用户在此表中只有一个条目。

我一直在试图将scoreScore的总和从Score分别保存到Leaderboard的totalScore属性中,但似乎无法找出正确的语法。

我的查询如下:

UPDATE t1 
SET t1.totalScore = t2.completeScore 
FROM dbo.Leaderboard AS t1, 
    ((SELECT Id, SUM(weeklyScore) AS completeScore FROM dbo.Scores) as F 
     INNER JOIN 
      (SELECT Id FROM dbo.Scores GROUP BY Id) AS S ON F.Id = S.Id) AS t2 
WHERE t1.Id = t2.Id 

回答

0

试试这个,让我们知道如何去:

var total1 = ("UPDATE t1 " + 
     "SET t1.totalScore = t2.completeScore " + 
     "FROM dbo.Leaderboard AS t1, (SELECT F.Id, F.completeScore FROM " + 
     "(SELECT Id, SUM(weeklyScore) AS completeScore FROM dbo.Scores GROUP BY ID) as F " + 
     "INNER JOIN (SELECT Id FROM dbo.Scores/* GROUP BY Id*/) AS S "+ 
     "ON F.Id = S.Id) AS t2 "+ 
     "WHERE t1.Id = t2.Id"); 

顺便说一句,我认为你是失踪的定义中的GROUP BY条款F派生表,并且您不需要S派生表的定义中的GROUP BY

+0

是的,我明白你的意思是不是在S中需要GROUP BY子句,而是在F中。我试过这个查询,并且收到的错误是“列'Id'被指定了多次t2'。 – Marguerite

+0

而不是'SELECT *'从F和S派生表中选择你需要的列。 –

+0

yes that worked !! Thank你这么多! – Marguerite

相关问题