我有两张表A
和B
。表A的列为PersonID
,MobileNumber
,PersonName
,其中PersonID
和MobileNumber
是唯一列。表B的列为ReportID
,PersonID
,Details
,ReportID
为唯一列。
每个人都可以使用不同的ReportID
添加任意数量的报告。现在我的表B有很多报告,我想在其中添加MobileNumber
列。但表B有一个人的许多条目。我可以使用什么查询来获取表A中的MobileNumber
并将其填充到表B中,每个PersonID
?该查询应从表A中获取MobileNumber
,然后将其添加到PersonID
列的表B中。
示例
表A
PersonID | MobileNumber | PersonName
P1 9999999999 John
P2 8888888888 Mack
P3 7777777777 Jack
P4 6666666666 Mike
表B
ReportID | PersonID | Details | MobileNumber
R1 P1 .....
R2 P2 .....
R3 P2 .....
R4 P3 .....
R5 P3 .....
R6 P3 .....
R7 P4 .....
R8 P4 .....
我可以使用什么查询来填充手机号码并获得如下结果?
预期结果
ReportID | PersonID | Details | MobileNumber
R1 P1 ..... 9999999999
R2 P2 ..... 8888888888
R3 P2 ..... 8888888888
R4 P3 ..... 7777777777
R5 P3 ..... 7777777777
R6 P3 ..... 7777777777
R7 P4 ..... 6666666666
R8 P4 ..... 6666666666
PS:
我不想将值选为新表。我想使用UPDATE
答案 0 :(得分:2)
您可以使用以下查询来实现此目的:
UPDATE B
INNER JOIN A ON A.PersonID = B.PersonID
SET B.MobileNumber = A.MobileNumber
答案 1 :(得分:0)
您应该使用JOIN语句来实现此目的。更具体地说,LEFT OUTER JOIN如下所示
SELECT B.*, A.MobileNumber
FROM TableB B LEFT OUTER JOIN
TableA A on B.PersonID=A.PersonID
我不想将值选为新表。我想使用UPDATE填充原始表本身的值 基于此,您可以使用以下语句
ALTER TABLE TableB
ADD MobileNumber VARCHAR(50)
GO
如果TableB中不存在该列,则需要在ALTER语句之上触发
UPDATE B
SET
B.MobileNumber= A.MobileNumber
FROM TableB B LEFT OUTER JOIN
TableA A on B.PersonID=A.PersonID
答案 2 :(得分:0)
更新DhruvJoshi's
和Mittal's
回答我能够使用下面适用于我案例的查询。
UPDATE TableB
SET MobileNumber = A.MobileNumber
FROM TableB AS B
INNER JOIN
TableA AS A ON B.PersonID = A.PersonID
INNER JOIN
TableB ON A.PersonID = TableB.PersonID