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

时间:2012-08-01 11:27:49

标签: sql-server

我有两个表,我想从GROUP BY数据

更新一行

这是我的代码:

第二段代码:

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

第二个代码给我一个错误

  

Msg 512,Level 16,State 1,Line 1
  子查询返回超过1   值。当子查询遵循=,!=,<,< =时,不允许这样做   ,>,> =或当子查询用作表达式时。

请帮忙

我确定这很简单

1 个答案:

答案 0 :(得分:3)

您需要使用WHERE - 条款(不再需要GROUP BY) 否则,您的子查询会为每个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
    )