sql >> Databasteknik >  >> RDS >> Mysql

MySQL INSERT INTO table SELECT FROM another_table, inuti en PROCEDUR

Om möjligt, undvik att använda CURSORs . SQL är utformad för att göra saker i bulk, inte en rad i taget.

Studera konstruktioner som

INSERT INTO ... SELECT ...;

CREATE TABLE ... SELECT ...;

Till exempel, pods_cursor kan förmodligen elimineras 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; 

(Aj. Att blanda HÖGER och VÄNSTER får mitt huvud att snurra som en ugglas.)

Använder OR i ON låter väldigt ineffektivt. Vad är avsikten?




  1. Returnera samling från paketerad funktion för användning i select

  2. Hitta och ersätt text i hela tabellen med en MySQL-fråga

  3. Datumtyp utan tid i Oracle

  4. EF6 MySql:Update-Database -Script genererar SQL utan semikolon