Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL ERROR 1046 (3D000):Keine Datenbank bei Aktualisierungsabfrage ausgewählt

Sie haben Felder falsch benannt, aber selbst wenn Sie sie korrigieren, ist dies ein Fehler in MySQL das lässt Sie nicht zu, wenn Sie keine Standarddatenbank haben.

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

Das Problem ist spezifisch für UPDATE mit doppelt verschachtelten Abfragen und ohne Standarddatenbank (SELECT oder einfach verschachtelte Abfragen oder Standarddatenbank funktionieren einwandfrei)