sql >> Databáze >  >> RDS >> Mysql

MySQL ERROR 1046 (3D000):Při aktualizačním dotazu není vybrána žádná databáze

Máte nesprávně pojmenovaná pole, ale i když je opravíte, jedná se o chybu v MySQL která vám to nedovolí, pokud nemáte výchozí databázi.

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

Problém je specifický pro UPDATE s dvojitě vnořenými dotazy a bez výchozí databáze (SELECT nebo jednoduché vnořené dotazy nebo výchozí databáze fungují dobře)



  1. Bezpečnost vlákna MySQL Select Last_Insert_ID

  2. Odkazování na cizí klíč MySQL

  3. Jak sjednotit všechny dotazy SQL-SQLite podle případu?

  4. Jak správně používat Oracle ORDER BY a ROWNUM?