2016-08-26 34 views
0

我只是想表A列複製並粘貼到表B.SQL複製粘貼到另一個表的列:「子查詢返回多個值。」

我檢查了兩個表具有相同的行數

ALTER TABLE [dbo].[cube] 
ADD [peer_group] int 

--check row count same 
SELECT COUNT(*) 
    FROM [dbo].[cube] 
--13103507 

SELECT TOP 10 
     peer_group 
    FROM [dbo].[cube] 
--NULL 
--NULL 
--NULL 
--NULL 
--NULL 
--NULL 
--NULL 
--NULL 
--NULL 
--NULL 

SELECT COUNT(group_5) 
    FROM [dbo].[v_group] 
--13103507 

SELECT TOP 10 
     group_5 
    FROM [dbo].[v_group] 
--1 
--1 
--2 
--2 
--3 
--3 
--4 
--4 
--4 
--4 

,而且我用SET

UPDATE [dbo].[cube] 
SET [peer_group] = 
       (SELECT [group_5] 
       FROM [dbo].[v_group] 
       ) 

但它拋出錯誤:

Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

任何一個知道如何請修復此問題?謝謝!

對不起,我可以方便地發佈我的數據在這裏。請讓我知道是否需要,我會模擬一些數據。


UPDATE: 基於答案/評論(謝謝!)我理解,因爲SQL以爲我想放在SELECT子查詢中檢索到的許多值到新的空列[中的每一行發生錯誤peer_group。

看起來SET [column_1] = [column_2]只有當兩列在同一個表或連接表中時才起作用(請參閱@Praveen的解決方案)。

考慮到我的具體情況,[dbo].[v_group]是從[dbo].[cube]生成的視圖。我只用

SELECT * 
     ,_something_ AS [peer_group] --this is what I had in [dbo].[v_group] 
    INTO [dbo].[new] 
    FROM [dbo].[cube] 
+0

問題很明顯(你不明白哪部分錯誤信息?)。但是,你想要做的並不明顯。請解釋你正在努力完成的事情。 –

+0

什麼是[v_group]和多維數據集表之間的關係在連接和更新中使用 –

+0

謝謝@Gordon Linoff,我想讓table_A中的column_1與table_B中的column_2完全相同 –

回答

2

你可以試試;

Update a 
set a.[peer_group] = b.[group_5] 
from [dbo].[cube] a 
join [dbo].[v_group] b on a.id = b.id; 

錯誤是由於子查詢返回多個更新值。
你需要加入這兩個表做更新。