Php 使用其他列的值更新多列
我有两张桌子 FWU邀请Php 使用其他列的值更新多列,php,mysql,sql,Php,Mysql,Sql,我有两张桌子 FWU邀请 id moduleid qdetailid 1 1 10 2 2 11 3 3 12 4 7 13 5 8 14 fw_工业详细信息 id moduleid officeid 10 0 100 11 0 110 12 0
id moduleid qdetailid
1 1 10
2 2 11
3 3 12
4 7 13
5 8 14
fw_工业详细信息
id moduleid officeid
10 0 100
11 0 110
12 0 120
13 0 130
14 0 104
id moduleid officeid
10 1 100
11 2 110
12 3 120
13 7 130
14 8 104
qdetaild列是fw_ind_details
中的主键。我想做的是从fw_investments
表中获取该特定qdetaild
的moduleid
,并想在fw_ind_details
中更新。也就是说,应该通过更新查询来完成
所需输出
fw_工业详细信息
id moduleid officeid
10 0 100
11 0 110
12 0 120
13 0 130
14 0 104
id moduleid officeid
10 1 100
11 2 110
12 3 120
13 7 130
14 8 104
这就是我迄今为止所尝试的
UPDATE `fw_ind_details`
SET `moduleid`=(select moduleid
from fw_invitaions fo,fw_ind_details fi
where f0.qdetailid=fi.id
)
我知道我的方法是错误的,任何建议都将不胜感激
我对PHP的使用持开放态度
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
要使用的SQL是:
UPDATE `fw_ind_details` fi
SET `moduleid`=(SELECT moduleid
FROM fw_invitaions fo
WHERE fo. qdetailid =fi.id
)
使用连接
UPDATE `fw_ind_details`
JOIN fw_invitations ON fw_ind_details.id = fw_invitations.qdetailid
SET fw_ind_details.moduleid = fw_invitations.moduleid
哈哈,你打败我了+1.获得same@Barmer:非常感谢:)也将接受它+1。不能期待更好的答案。@Barmer:我有一个问题,有可能一个IDETALID分配给两个模块,即分配给两个不同的模块ID,如何处理?提前感谢它将依次分配每个模块,最后一个指定的将是最终结果。您可以使用
ORDER BY
来控制此操作。但是,您可以加入子查询,我将更新答案以显示它。感谢答案:)@Barmar感谢回复和答案。我有一个问题,一个IDETALID可能被分配给两个模块,即两个不同的模块ID,如何处理?提前感谢Hanks的回答:)