Mysql 根据结果组的最大结果更新所有字段
我有一桌葡萄片。每个补丁都有一个喷雾表,其中有一个日期和喷雾类型,每个喷雾类型表都有一个“最短时间”,直到您可以选择为止 修补程序表:Mysql 根据结果组的最大结果更新所有字段,mysql,max,dateadd,Mysql,Max,Dateadd,我有一桌葡萄片。每个补丁都有一个喷雾表,其中有一个日期和喷雾类型,每个喷雾类型表都有一个“最短时间”,直到您可以选择为止 修补程序表: PatchID | earliestDate 1 --- 2 --- 喷雾台 SprayID | PatchID | TypeID |Date 1 1 1 2019-06-1 2 1 2 2019-06-16 1 2
PatchID | earliestDate
1 ---
2 ---
喷雾台
SprayID | PatchID | TypeID |Date
1 1 1 2019-06-1
2 1 2 2019-06-16
1 2 1 2019-06-16
2 2 2 2019-06-1
喷雾式
TypeID | minimumTime
1 14
2 28
我已经抓到了那本书
MAX(newEarliest) FROM ( SELECT DATE_ADD(Spray.Date, INTERVAL Type.minimumTime DAY) As newEarliest
FROM Spray
LEFT JOIN Patch ON Patch.PatchID = Spray.PatchID
LEFT JOIN Type ON Type.TypeID = Spray.TypeID) WHERE Patch.PatchID = 1;
但从这里我被困住了
UPDATE Patch SET EarliestDate = MAX(newEarliest) FROM ( SELECT DATE_ADD(Spray.Date, INTERVAL Type.minimumTime DAY) As newEarliest
FROM Spray
LEFT JOIN Patch ON Patch.PatchID = Spray.PatchID
LEFT JOIN Type ON Type.TypeID = Spray.TypeID) ) WHERE ??;
预期结果应该是,补丁1将于7月14日发布,补丁2将于7月30日发布。。但我不能做最后的连接。我希望/期待着?我刚碰到一堵墙,需要休息一下,但可能有一个SQL命令我错过了?试试这个查询。在执行更新之前,您可以先作为
子查询获取max()
分组依据补丁ID
update Patch p
Inner join (
select t1.PatchID, max(date_add(t1.Date, interval t3.minimumTime day)) as newEarliest
from Spray t1
left join Patch t2 on t2.PatchID = t1.PatchID
left join Type t3 on t3.TypeID = t1.TypeID
group by t1.PatchID) t on t.PatchID = p.PatchID
set p.EarliestDate = t.newEarliest
请看:@草莓,我以为我有?我已经尝试了这个和几个变体,但我得到了一个错误“您的SQL语法有错误;请检查与您的MySQL服务器版本对应的手册,以获得正确的语法,以便在“from”(选择t1.PatchID)附近使用,@BaneStar007,立即尝试