Sql 根据查询向列插入数据

Sql 根据查询向列插入数据,sql,join,sql-update,Sql,Join,Sql Update,我有两张桌子。我试图更新的表是表A,它没有一些ID ProfileID。另一方面,表B包含所有ID。我正在尝试根据查询更新表A中的列。当我加入表时,我得到查询中的所有结果,当我尝试更新/插入列中的结果时,我得到一个无法插入到表中的结果。我打算用以下查询插入我的结果 insert into TableA a (profileID) select b.profileID from tableA join TableB B on B.userID = A.userID where a.

我有两张桌子。我试图更新的表是表A,它没有一些ID ProfileID。另一方面,表B包含所有ID。我正在尝试根据查询更新表A中的列。当我加入表时,我得到查询中的所有结果,当我尝试更新/插入列中的结果时,我得到一个无法插入到表中的结果。我打算用以下查询插入我的结果

 insert into TableA a
(profileID) 

select b.profileID 
from tableA 
join TableB B on B.userID = A.userID  

where a.profileID = '' or a.profileID is null  


    Table A                                                            Table B

UserID | profileID | lastname | Firstname               UserID | profileID | lastname | Firstname 
0012356               Wung      Clara                   0012356   15963         Wung      Clara 
0512356    14753      Williams  Michael                 0512356   14753      Williams     Michael 
0956356               Walters   Jeff                    0956356   94356      Walters      Jeff 
0486312    68956      Wwagner   George                  0486312   68956      Wwagner   George 


select A.*, B.profileID 
from TableA A
join TableB B on B.userID = A.userID 


Results 



UserID | profileID | lastname | Firstname 
0012356   15963         Wung      Clara 
0512356   14753      Williams     Michael 
0956356   94356      Walters      Jeff 
0486312   68956      Wwagner   George 

您需要使用
update
语句而不是
INSERT-INTO
更新表(
TableA
):

UPDATE TableA
SET  TableA.profileID = TableB.profileID 
FROM TableB
     INNER JOIN TableA ON TableA.userID = TableB.userID 
WHERE TableA.profileID = '' OR TableA.profileID IS NULL

您需要使用
update
语句而不是
INSERT-INTO
更新表(
TableA
):

UPDATE TableA
SET  TableA.profileID = TableB.profileID 
FROM TableB
     INNER JOIN TableA ON TableA.userID = TableB.userID 
WHERE TableA.profileID = '' OR TableA.profileID IS NULL

不应使用“INSERT”语句更新表。而是使用“更新”

UPDATE tableA SET tableA.profileID = tableB.profileID FROM tableB b
INNER JOIN TableA a ON a.userID = b.userID WHERE
a.profileID = '' OR a.profileID IS NULL;

不应使用“INSERT”语句更新表。而是使用“更新”

UPDATE tableA SET tableA.profileID = tableB.profileID FROM tableB b
INNER JOIN TableA a ON a.userID = b.userID WHERE
a.profileID = '' OR a.profileID IS NULL;

您正在使用哪些RDBMS?是否要更新tableA以获得ProfileID?你的成绩表不准确。A.*存在,但B.profileID不存在。由于表A中已经存在这些用户ID,我认为您需要执行UPDATE语句,而不是INSERT语句。或者,您可以删除那些profileID为空的记录,然后插入新值。此外,在插入时,请确保insert select子句中提到了所有列。否则,它将在select子句中未指定的任何列中插入默认值您使用的RDBMS的可能副本?是否要更新tableA以获得ProfileID?你的成绩表不准确。A.*存在,但B.profileID不存在。由于表A中已经存在这些用户ID,我认为您需要执行UPDATE语句,而不是INSERT语句。或者,您可以删除那些profileID为空的记录,然后插入新值。此外,在插入时,请确保insert select子句中提到了所有列。否则,它将在select子句中未指定的任何列中插入默认值