我需要使用表2(reqs)中的数据更新表1(inspjc)中的字段(级别),其中“level”字段的名称不同(reqs_level)。
两个表都具有相同的标识字段名称(reqs_id)和相应的数据。
“reqs”表中包含所有“reqs_id”数字(大约1000个条目),其中只有一些“reqs_id”数字出现在“inspjc”表中。 “reqs_level”字段中描述的级别范围为0到108,因此无法知道这些已分配级别的顺序或使用,它们根据每个需求的要求显示为随机。
我在堆栈溢出中尝试了一些示例,但没有一个接近。
以下是我最近的尝试:
<?php
include("../xxx");
$cxn = mysqli_connect($host,$user,$password,$dbname);
$query = "SELECT `inspjc`.`reqs_id`,`reqs`.`reqs_level`
FROM `inspjc`
JOIN `reqs`
ON `inspjc`.`reqs_id`,`reqs`.`reqs_id`
WHERE `inspjc`.`inspjc_id` = '$inspjc_id'
AND `reqs`.`reqs_id` = `reqs`.`reqs_no`";
$result = mysqli_query($cxn,$query);
while($row = mysqli_fetch_assoc($result))
{
extract($row);
$ids = array("$reqs_id");
$level = array("$reqs_level");
}
include("../xxx");
$cxn = mysqli_connect($host,$user,$password,$dbname)
or die ("Couldn't connect to server.");
$query = "UPDATE `inspjc` SET `level`='".$level."' WHERE `reqs_id` IN ('".implode(',', $ids)."') AND `inspjc_id` = '$inspjc_id'";
$result = mysqli_query($cxn,$query)
or die ("Couldn't execute query4. "
.mysqli_error($cxn));
?>
表格的一些数据示例 (请注意“reqs”有55列和1093个条目,“inspjc”有9列和78个条目)
reqs
reqs_id status_id reqs_required reqs_level
00324 3 Erection 32
00526 7 Erection 5
00112 8 Modify 96
inspjc
reqs_id inspjc_id inspjc_date level
00112 K3456Y 2015-06-30 ***96***
00526 K3456Y 2015-04-22 ***5***
答案 0 :(得分:0)
经过反复试验,我说得对,以下是对问题进行排序的查询:
UPDATE `inspjc` i
JOIN `reqs` s
ON i.`reqs_id` = s.`reqs_id`
SET i.`level` = s.`reqs_level`
WHERE i.`inspjc_id` = '$inspjc_id'