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

MySQL INSERT INTO table SELECT FROM other_table, innerhalb einer PROCEDURE

Vermeiden Sie nach Möglichkeit die Verwendung von CURSORs . SQL wurde entwickelt, um Dinge in großen Mengen zu erledigen, nicht zeilenweise.

Studieren Sie Konstrukte wie

INSERT INTO ... SELECT ...;

CREATE TABLE ... SELECT ...;

Beispiel:pods_cursor kann wahrscheinlich beseitigt werden über:

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; 

(Autsch. Wenn ich RECHTS und LINKS kombiniere, dreht sich mein Kopf wie der einer Eule.)

Mit OR in ON klingt sehr ineffizient. Was ist die Absicht?