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

MySQL INSERT INTO table SELECT FROM another_table, à l'intérieur d'une PROCEDURE

Dans la mesure du possible, évitez d'utiliser des CURSORs . SQL est conçu pour faire les choses en masse, pas une ligne à la fois.

Étudiez des constructions comme

INSERT INTO ... SELECT ...;

CREATE TABLE ... SELECT ...;

Par exemple, pods_cursor peut probablement être éliminé via :

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; 

(Aïe. Mélanger DROITE et GAUCHE me fait tourner la tête comme une chouette.)

Utiliser OR en ON semble très inefficace. Quelle est l'intention ?