Mysql
 sql >> Base de données >  >> RDS >> Mysql

ERREUR MySQL 1046 (3D000) :Aucune base de données sélectionnée lors de la requête de mise à jour

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)