我有三张 table 。
检验报告
+----------+-----------------+------+
| ReportID | InspectionID_id | Date |
+----------+-----------------+------+
inspectionreport 具有 ReportID
PK、InspectionID_id
FK 和日期字段 Date
。
检查
+--------------+------------+
| InspectionID | PartID_id |
+--------------+------------+
检查具有 InspectionID
PK 和 PartID_id
FK。
部分
+--------+---------------+
| partID | LastInspected |
+--------+---------------+
零件有一个 partID
PK 和日期字段 LastInspected
,默认情况下为 null。
我想要做的是用相关部分的最新日期
填充LastInspected
。
到目前为止,我已经尝试使用此 SELECT 查询:
SELECT *
FROM moorings_inspectionreport
JOIN moorings_inspection
ON moorings_inspectionreport.InspectionID_id = moorings_inspection.InspectionID;
我想我可以用它来检查 PartID_id
是否与 partID
匹配,因为它现在只有两个表。但我对如何实现这一点感到非常困惑,因为我对 sql 查询非常不熟悉。
我还想将此更新放入每日运行事件中,该事件会针对零件表中的每个条目进行更新。所以对我来说,这增加了另一个层次的困惑。
最佳答案
通过连接 2 个表 inspection
和 inspectionreport
并按partid分组,您可以获得每个partid的最后一个lastinspected
。
然后加入part
并更新:
update part p
inner join (
select i.partid, max(r.date) date
from inspection i
inner join inspectionreport r on r.inspectionid = i.inspectionid
group by i.partid
) t on p.partid = t.partid
set p.lastinspected = t.date
关于mysql - 如何使用 JOIN 更新 SELECT 表中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59211473/