Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
insertintoselect [2015/03/17 14:36] webproducer angelegt |
insertintoselect [2017/10/18 00:00] (aktuell) |
||
---|---|---|---|
Zeile 3: | Zeile 3: | ||
Mit dem SQL-Statement "INSERT INTO SELECT" können einzelne Spalten oder ein gesamter Datensatz aus einer SELECT-Anweisung als neuer Datensatz hinzugefügt werden. | Mit dem SQL-Statement "INSERT INTO SELECT" können einzelne Spalten oder ein gesamter Datensatz aus einer SELECT-Anweisung als neuer Datensatz hinzugefügt werden. | ||
- | //Beispiel:// | + | //Beispiel 1:// |
- | 2 der 3 Spalten der Tabelle "neighborhood" sollen mit Inhalten aus der Tabelle "users" gefüllt werden: | + | Alle Spalten sollen in den neuen Datensatz eingefügt werden (Datensatz kopieren): |
+ | <code sql> | ||
+ | INSERT INTO user SELECT * FROM user WHERE id = 314 | ||
+ | </code> | ||
+ | //Beispiel 2:// | ||
+ | |||
+ | Zwei von drei Spalten der Tabelle "neighborhood" sollen mit Inhalten aus der Tabelle "users" gefüllt werden: | ||
+ | <code sql> | ||
INSERT INTO neighborhood | INSERT INTO neighborhood | ||
SELECT :id, id, distance | SELECT :id, id, distance | ||
Zeile 12: | Zeile 19: | ||
users.basis_1 ) as distance from users WHERE lastlogin + interval '7 days' > now() ) as users | users.basis_1 ) as distance from users WHERE lastlogin + interval '7 days' > now() ) as users | ||
WHERE distance > 0 ORDER BY distance LIMIT 500"; | WHERE distance > 0 ORDER BY distance LIMIT 500"; | ||
+ | </code> | ||
* Spalte :id ist ein binding Parameter, der, genau wie :Basis_1, beim Aufruf an SQL übergeben wird | * Spalte :id ist ein binding Parameter, der, genau wie :Basis_1, beim Aufruf an SQL übergeben wird | ||
* Spalte id wird im Unter-Select ermittelt | * Spalte id wird im Unter-Select ermittelt | ||
* Spalte distance wird ebenfalls im Unter-SELECT ermittelt | * Spalte distance wird ebenfalls im Unter-SELECT ermittelt |