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

INSERT INTO, wenn die Bedingung erfüllt ist

Das INSERT Anweisung hat zwei Varianten:

INSERT INTO tableX
    (a, b, c, ...)
VALUES
    (1, 2, 3, ...) ;

und

INSERT INTO tableX
    (a, b, c, ...)
SELECT
    1, 2, 3
FROM
    ... ;             --- the same or another table or many tables

Das dual ist eine Systemtabelle mit genau 1 Zeile. Es kann für verschiedene Dinge verwendet werden. Hier wird es also als VALUES (...) verwendet wird als SELECT ... umgeschrieben wo wir keine passende Tabelle haben, um sie in FROM einzufügen Klausel:

$query_land = "INSERT INTO `Sequence` (`num_arr`,`start`,`fin`,`way_id`) 
               SELECT '".$solution[$i][0]."','".$solution[$i][1]."',
                      '".$solution[$i][2]."','".$solution[$i][3]."'
               FROM dual 
               WHERE '".$solution[$i][0]."' IN (SELECT num_arr 
                                                FROM Schedule 
                                                WHERE num_arr<>'')";