Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL INSERT INTO table SELECT FROM another_table, dentro de um PROCEDURE


Sempre que possível, evite usar CURSORs . SQL é projetado para fazer coisas em massa, não uma linha de cada vez.

Estude construções como
INSERT INTO ... SELECT ...;

CREATE TABLE ... SELECT ...;

Por exemplo, pods_cursor provavelmente pode ser eliminado através de:
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; 

(Ai. Misturar DIREITO e ESQUERDO faz minha cabeça girar como a de uma coruja.)

Usando OR em ON soa muito ineficiente. Qual é a intenção?