具有多个表的sql查询,从一个表中获取数据并填充到另一个表中

2w2cym1i  于 2021-06-21  发布在  Mysql
关注(0)|答案(3)|浏览(417)

我有两张table A 以及 B . 表a的列如下 PersonID , MobileNumber , PersonName 哪里 PersonID 以及 MobileNumber 是唯一的列。表b的列如下 ReportID , PersonID , DetailsReportID 作为唯一列。
每个人可以添加任意数量的具有不同属性的报告 ReportID . 现在我的表b有许多报告,我想添加 MobileNumber 列到它。但是表b中有许多针对一个人的条目。我可以用什么查询 MobileNumber 从表a中,并将其填充到表b中 PersonID ? 查询应采用 MobileNumber 从表a中删除,然后将其添加到表b中 PersonID 列。
例子
表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

附言:
我不想选择值作为新表。我想使用update填充原始表本身中的值

gmxoilav

gmxoilav1#

您应该使用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
lrl1mhuk

lrl1mhuk2#

您可以使用以下查询来实现这一点:

UPDATE B
INNER JOIN A ON A.PersonID = B.PersonID
SET B.MobileNumber = A.MobileNumber
xvw2m8pv

xvw2m8pv3#

更新 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

相关问题