如何在 SQL 中使用 group by 更新列

Ofe*_*ear 1 sql-server

我有两个表,我想从GROUP BY数据中更新一行

这是我的代码:

第二个代码:

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

第一个代码:

(SELECT COUNT(ImageURL) as "Count"
FROM [TABLE].[dbo].[Frames]
GROUP BY Movie_Id
Run Code Online (Sandbox Code Playgroud)

第一个代码给我一行数字

Count
 12
  6
 10
 10
 10
Run Code Online (Sandbox Code Playgroud)

我想把它插入 Movies.NumFrames

第二个代码给我一个错误

消息 512,级别 16,状态 1,第 1 行
子查询返回了 1 个以上的值。当子查询跟随 =、!=、<、<=、>、>= 或当子查询用作表达式时,这是不允许的。

请帮忙

我确定这很简单

Pet*_*ang 5

您需要使用 -WHERE子句(GROUP BY不再需要)。
否则,您的子查询为 each 返回一行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
    )
Run Code Online (Sandbox Code Playgroud)