Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL INSERT INTO table SELECT FROM another_table, all'interno di una PROCEDURA

Ove possibile, evita di usare CURSORs . SQL è progettato per eseguire operazioni in blocco, non una riga alla volta.

Studia costrutti come

INSERT INTO ... SELECT ...;

CREATE TABLE ... SELECT ...;

Ad esempio, pods_cursor può probabilmente essere eliminato tramite:

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; 

(Ahi. Mescolare DESTRA e SINISTRA mi fa girare la testa come quella di un gufo.)

Usando OR in ON suona molto inefficiente. Qual è l'intento?