1

GROUP BY2 つのテーブルがあり、データから 1 つの行を更新したい

これは私のコードです:

2 番目のコード:

UPDATE [TABLE].[dbo].[Movies]
SET [NumFrames] = 
   (SELECT COUNT(ImageURL) as "Count"
    FROM [TABLE].[dbo].[Frames]
    GROUP BY Movie_Id)
GO

最初のコード:

(SELECT COUNT(ImageURL) as "Count"
FROM [TABLE].[dbo].[Frames]
GROUP BY Movie_Id

最初のコードは数字の行を教えてくれます

Count
 12
  6
 10
 10
 10

中に入れたいMovies.NumFrames

2番目のコードでエラーが発生します

メッセージ 512、レベル 16、状態 1、行 1
サブクエリが複数の値を返しました。サブクエリが =、!=、<、<=、>、>= の後にある場合、またはサブクエリが式として使用されている場合、これは許可されません。

助けてください

確かに単純だな

4

1 に答える 1

5

WHERE-clauseを使用する必要があります(GROUP BYは不要になりました)。
それ以外の場合、サブクエリは ごとに 1 つの行を返すMovie_Idため、更新のソースとして複数の行を使用できます。

UPDATE [TABLE].[dbo].[Movies]
   SET [NumFrames] = 
    ( SELECT COUNT(ImageURL) as "Count"
      FROM [TABLE].[dbo].[Frames]
      WHERE [TABLE].[dbo].[Frames].Movie_Id = [TABLE].[dbo].[Movies].Movie_Id
    )
于 2012-08-01T11:32:01.720 に答える