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

MySQL INSERT INTO table SELECT FROM other_table, uvnitř PROCEDURE

Kdykoli je to možné, nepoužívejte CURSORs . SQL je navržen tak, aby dělal věci hromadně, ne po jednom řádku.

Studujte konstrukty jako

INSERT INTO ... SELECT ...;

CREATE TABLE ... SELECT ...;

Například pods_cursor lze pravděpodobně odstranit pomocí:

INSERT INTO tblResultsErrors
        (POD, QtyMeasured)
    SELECT els.LocationCode, els.Quantity 
        FROM EnergyLocation el 
        RIGHT JOIN EnergyLocationSeries els
          ON els.LocationCode = el.Code2 OR els.LocationCode = el.Codep 
        LEFT JOIN EnergyContract ec
          on ec.LocationId = el.Id 
        WHERE el.Code2 IS NULL; 

(Au. Při míchání VPRAVO a VLEVO se mi hlava točí jako sova.)

Pomocí OR v ON zní velmi neefektivně. Jaký je záměr?




  1. provést cronjob přesně jednou

  2. Aritmetika sloupce data v dotazu PostgreSQL

  3. Mapování vybrané hodnoty v MySQL

  4. Rekurzivní postgres JSONB