14

別のテーブルの合計でテーブルを単純に更新しようとしているのですが、何らかの理由で1行しか更新されていません。表の関連情報は次のようになります。

ゲーム

gameplayer|points
----------------
John      |5
Jim       |3
John      |3
Jim       |4

選手のキャリア

playercareername|playercareerpoints
-----------------------------------
John            |0
Jim             |0

最終的に、更新を実行した後、最後のテーブルを次のように表示したいと思います。

選手のキャリア

playercareername|playercareerpoints
-----------------------------------
John            |8
Jim             |7

これは、最初の行のみを更新しようとしたクエリです。

UPDATE playercareer
SET playercareer.playercareerpoints = 
    (
SELECT 
    SUM(games.points) 
FROM games
    WHERE
     playercareer.playercareername=games.gameplayer
    )

これに対する答えが見つからないようです。あなたの時間とアドバイスを前もってありがとう!

4

2 に答える 2

43
UPDATE playercareer c
INNER JOIN (
  SELECT gameplayer, SUM(points) as total
  FROM games
  GROUP BY gameplayer
) x ON c.playercareername = x.gameplayer
SET c.playercareerpoints = x.total
于 2012-04-10T20:08:07.797 に答える
0

同じテーブル名ではありませんが、これは私にとってはうまくいきました

update e
set e.Absence_Hours = a.hours
from [Thomas_Test].[dbo].Employee e
inner join (select empnum
                 , sum(hours) as hours
            FROM [Thomas_Test].[dbo].[Employee_Absence_Report]
            group by empnum) a 
        on a.empnum = e.emp_no;
于 2022-01-12T18:26:43.670 に答える