Sql 根据查询向列插入数据
我有两张桌子。我试图更新的表是表A,它没有一些ID ProfileID。另一方面,表B包含所有ID。我正在尝试根据查询更新表A中的列。当我加入表时,我得到查询中的所有结果,当我尝试更新/插入列中的结果时,我得到一个无法插入到表中的结果。我打算用以下查询插入我的结果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.
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子句中未指定的任何列中插入默认值