使用其他列的值进行多列更新

R R*_*R R 0 php mysql sql

我有两张桌子

fw_invitations

id    moduleid   qdetailid
1       1          10  
2       2          11
3       3          12
4       7          13
5       8          14
Run Code Online (Sandbox Code Playgroud)

fw_ind_details

id    moduleid   officeid
 10       0         100 
 11       0         110
 12       0         120
 13       0         130
 14       0         104
Run Code Online (Sandbox Code Playgroud)

列qdetaild是主键.fw_ind_details我想要做的是想要moduleid从该fw_invitations表获取该特定qdetailid并希望更新.fw_ind_details这应该用更新查询来完成.

期望的输出

fw_ind_details

   id    moduleid   officeid
   10       1         100 
   11       2         110
   12       3         120
   13       7         130
   14       8         104
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所尝试的;

UPDATE `fw_ind_details` 
SET `moduleid`=(select moduleid 
               from fw_invitaions fo,fw_ind_details fi
               where f0.qdetailid=fi.id
                             )
Run Code Online (Sandbox Code Playgroud)

我知道我的做法是错误的,任何建议都将受到赞赏.

我愿意使用PHP.

Bar*_*mar 7

UPDATE fw_ind_details d
JOIN fw_invitations i ON i.qdetailid = d.id
SET d.moduleid = i.moduleid
Run Code Online (Sandbox Code Playgroud)

要在有多个匹配项时获取特定模块ID,可以使用子查询加入; 此示例使用最高模块ID:

UPDATE fw_ind_details d
JOIN (SELECT qdetailid, MAX(moduleid) moduleid
      FROM fw_invitations
      GROUP BY qdetailid) i
ON i.qdetailid = d.id
SET d.moduleid = i.moduleid
Run Code Online (Sandbox Code Playgroud)