sql >> Base de Datos >  >> RDS >> Mysql

MySQL ERROR 1046 (3D000):No se seleccionó ninguna base de datos en la consulta de actualización

Tiene campos con nombres incorrectos, pero incluso si los corrige, esto es un error en MySQL eso no te permitirá hacerlo si no tienes una base de datos predeterminada.

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();

El problema es específico de UPDATE con consultas anidadas dobles y sin base de datos predeterminada (SELECT o las consultas anidadas individuales o la base de datos predeterminada funcionan bien)