2012-08-01 25 views
1

我有兩個表更新使用組列,我想從GROUP BY數據如何在SQL

此更新一行是我的代碼:

第二碼:

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

第二個代碼行給我一個錯誤

消息512,級別16,狀態1行1
子查詢返回的值超過1 。當子查詢遵循=,!=,<,< = ,>,> =或當子查詢用作表達式時,這是不允許的。

請幫

我敢肯定,這是簡單的

+1

你是說* SQL *(它是*結構化查詢語言*),但你真的意思是** SQL Server **(Microsoft數據庫產品)?如果是這樣:請相應地調整您的標記,並告訴我們您正在使用的SQL Server的**版本** – 2012-08-01 11:49:25

+0

感謝您的評論。我正在通過SQL服務器MS SQL – Ofear 2012-08-02 04:51:31

回答

3

你需要使用一個WHERE -clause(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 
    ) 
+0

+1進行解答。我認爲我們可能需要爲外部更新子句添加一個條件,以便只選擇幀的表中可用的ID,所以最後[TABLE]。[dbo]。[Movies] .Movie_Id in(/ * movies from frames * /) – Kamal 2012-08-01 11:44:47

+0

完美答案!非常感謝! 我愛這個網站:) – Ofear 2012-08-02 04:49:56