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 | ||