SQL-Auswahl ins Feld
-
21-09-2019 - |
Frage
Ich möchte Folgendes erreichen:
Select DISTINCT(tableA.column) INTO tableB.column FROM tableA
Das Ziel wäre, einen bestimmten Datensatz auszuwählen und diese Daten dann in eine bestimmte Spalte einer neuen Tabelle einzufügen.
Lösung
Du hast es so ziemlich geschafft.
SELECT DISTINCT column INTO tableB FROM tableA
Es wird in alle in der Auswahlliste angegebenen Spalten eingefügt. Sie müssten also Ihren ausgewählten Werten einen Alias geben, wenn Sie in Spalten von einfügen müssen tableB
die nicht drin sind tableA
.
Andere Tipps
SELECT column INTO tableB FROM tableA
SELECT INTO eine Tabelle erstellen, da es neue Datensätze in sie einfügt. Wenn das nicht das, was Sie wollen (wenn tableB bereits vorhanden ist), dann müssen Sie etwas wie dies tun:
INSERT INTO tableB (
column
)
SELECT DISTINCT
column
FROM tableA
Denken Sie daran, dass, wenn TableB hat mehr Spalten, die nur die eine, müssen Sie die Spalten aufzulisten, die Sie in eingefügt werden (wie ich in meinem Beispiel getan haben).
Versuchen Sie, die folgende ...
INSERT INTO tableB (column)
Select DISTINCT(tableA.column)
FROM tableA
Das Ziel wäre, eine bestimmte Datenmenge wählen und dann die Daten in einer bestimmten Spalte einer neuen Tabelle einfügen.
Ich weiß nicht, was das Schema von tableB ist ... wenn Tabelle B ist bereits vorhanden und es gibt keine eindeutige Einschränkung auf die Spalte, die Sie als alle anderen tun können, deuten darauf hin, hier ....
INSERT INTO tableB (column)Select DISTINCT(tableA.column)FROM tableA
aber wenn Sie eine eindeutige Einschränkung auf Tabelle B haben und es existiert bereits werden Sie diese Werte bereits in Tabelle B ausschließen müssen ...
INSERT INTO tableB (column)
Select DISTINCT(tableA.column)
FROM tableA
WHERE tableA.column NOT IN (SELECT /* NOTE */ tableB.column FROM tableB)
-- NOTE: Remember if there is a unique constraint you don't need the more
-- costly form of a "SELECT DISTICT" in this subquery against tableB
-- This could be done in a number of different ways - this is just
-- one version. Best version will depend on size of data in each table,
-- indexes available, etc. Always prototype different ways and measure perf.