Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用其他列的值更新多列_Php_Mysql_Sql - Fatal编程技术网

Php 使用其他列的值更新多列

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

我有两张桌子

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         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的回答:)