Vous avez des champs mal nommés, mais même si vous les corrigez, c'est un bogue dans MySQL
cela ne vous laissera pas le faire si vous n'avez pas de base de données par défaut.
update test.object1 p
join (
select ur.id_object1, sum(ur.score * ur.weight) as total, count(*) as weight
from (
select lur.*
from (
select s.id_object1, s.id_object2, s.dt, s.score, 1 as weight
from test.score as s
join test.object1 as o1
using (id_object1)
where s.dt > o1.dt
order by
s.id_object1, s.id_object2, s.dt desc
) as lur
group by
lur.id_object1, lur.id_object1, date(lur.dt)
order by
lur.id_object1, lur.id_object1
) as ur
group by ur.id_object1
) as r
USING (id_object1)
SET p.total = p.total + r.total,
p.weight = p.weight + r.weight,
p.dt = now();
Le problème est spécifique à UPDATE
avec des requêtes double-imbriquées et pas de base de données par défaut (SELECT
ou les requêtes imbriquées ou la base de données par défaut fonctionnent correctement)