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

时间:2013-11-28 11:42:40

标签: php mysql sql

我有两张桌子

fw_invitations

id    moduleid   qdetailid
1       1          10  
2       2          11
3       3          12
4       7          13
5       8          14

fw_ind_details

id    moduleid   officeid
 10       0         100 
 11       0         110
 12       0         120
 13       0         130
 14       0         104

列qdetaild是fw_ind_details中的主键。我想要做的是想从moduleid表中获取特定fw_invitations的{​​{1}}并希望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

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

我愿意使用PHP。

3 个答案:

答案 0 :(得分:7)

UPDATE fw_ind_details d
JOIN fw_invitations i ON i.qdetailid = d.id
SET d.moduleid = i.moduleid

要在有多个匹配项时获取特定模块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

答案 1 :(得分:3)

使用加入...

UPDATE `fw_ind_details` 
JOIN fw_invitations ON fw_ind_details.id = fw_invitations.qdetailid
SET fw_ind_details.moduleid = fw_invitations.moduleid

答案 2 :(得分:2)

要使用的SQL是:

UPDATE `fw_ind_details` fi
   SET `moduleid`=(SELECT moduleid 
                     FROM fw_invitaions fo
                    WHERE fo. qdetailid =fi.id
                         )