Try this:
update
b
set
mycol=table_a.col1
from table_b b
inner join table_a on
b.id_A_val=table_a.id_A
Frage
I have 2 tables with the following structure:
Table A:
id_A col1
1 val1
2 val2
3 val3
... ....
Table B:
id_B mycol id_A_val
1 smval1 null
2 null 1
3 null 2
... ... ...
I want to copy values from Table A's col1 into Table B's mycol This is my expected result:
Expected:
id_B mycol id_A_val
1 smval1 null
2 val1 1
3 val2 2
... ... ...
I tried several combinations of SQL UPDATE. This was the latest I tried - but it throws an error saying "Subquery returned more than 1 value."
Tried:
UPDATE [dbo].[Table_B]
SET MYCOL = (SELECT inst.[COL1] FROM [dbo].[TABLE_A] a, [dbo].[TABLE_B] b
WHERE a.[ID_A] = b.[ID_A_VAL] AND b.ID_A_VAL IS NOT NULL)
Can someone throw some light on the correct direction to get a working query?
Lösung
Try this:
update
b
set
mycol=table_a.col1
from table_b b
inner join table_a on
b.id_A_val=table_a.id_A
Andere Tipps
Your error is that you are using very old style JOIN
in the assignation (select)
the correct syntax would be
UPDATE Table_B
SET MYCOL = (SELECT a.COL1
FROM TABLE_A a
WHERE a.ID_A = Table_B.ID_A_VAL AND Table_B.ID_A_VAL IS NOT NULL)
This syntax is valid, but usually an INNER JOIN
is applied in these situations
UPDATE table_b
SET mycol = table_a.COL1
FROM table_b
INNER JOIN table_a ON table_b.ID_A_VAL = table_a.id_A
Try This
UPDATE tableb
SET mycol=a.col1
FROM tableb b
INNER JOIN tablea a ON a.id_A=b.id_A_val
WHERE b.mycol is null
Your modified correlated subquery
UPDATE [dbo].[Table_B]
SET MYCOL = (
SELECT A.[COL1]
FROM [dbo].[TABLE_A] a
WHERE a.[ID_A] = [dbo].[Table_B].[ID_A_VAL]
)
WHERE [dbo].[Table_B].[ID_A_VAL] IS NOT NULL