2016-04-19 23 views
0

Sagen, ich habe 3 Tabellen, die jeweils mit einer Struktur, die ähnlich wie diese:Doppelte Einträge in Tabellen

| id | customer_id | col1  | col2  | col3  | 
|----|-------------|------------|------------|-------------| 
| 1 | C100  | some value | some value | some values | 
| 2 | C101  |   |   |    | 
| 3 | C102  |   |   |    | 

Jetzt möchte ich ihre Zeilen mit einem bestimmten customer-id duplizieren.

So in Pseudo-Code so etwas wie:

DUPLICATE FROM tab1, tab2, tab3 WHERE customer_ID = C100 SET customer_ID = C987; 

Es die Werte dieser drei Tabellen nehmen würde, wo die customer_idC100 ist und nur in jeder Tabelle einen neuen Eintrag machen, aber mit den neuen customer_idC987.

Die drei Tabellen würde wie folgt aussehen:

| id | customer_id | col1  | col2  | col3  | 
|----|-------------|------------|------------|-------------| 
| 1 | C100  | some value | some value | some values | 
| 2 | C101  |   |   |    | 
| 3 | C102  |   |   |    | 
| 4 | C987  | some value | some value | some value | 

Auch sind die Strukturen in den Tabellen etwas anders.

Die id ist ein Primärschlüssel, customer_id ist einzigartig.

+0

Also ersetzen Sie die Reihe? Ihr Beispiel hat keine Zeile mit customer_id = 123. Gibt es eindeutige Indizes für die Tabelle? Meinst du "3 Tische" oder "3 Reihen"? – dan08

+0

@ dan08 Sorry, mein Schlechter. Ich habe die ID geändert. Ja, sowohl die ID als auch die Kunden-ID sind einzigartig. – user1170330

+0

Es gibt mehrere Tabellen, in meinem Beispiel habe ich es in 3 geändert. Also ja, ich meine 3 Tabellen. Jeder von ihnen hat eine andere Struktur. – user1170330

Antwort

3

Vielleicht können Sie ein Insert-select tun:

INSERT INTO tab1 
SELECT id, 'C987', col1, col2, col3 
FROM tab1 
WHERE customer_id = 'C100'; 

Und Sie können eine ähnliche Abfrage für tab2 und tab3 tun.

+0

Ist es möglich, nicht jede Spalte einzeln anzugeben? Es gibt mehrere Spalten mit jeweils unterschiedlicher Struktur. Ich möchte das vermeiden. – user1170330

+0

@ user1170330 Ich denke, Sie können nicht, weil Sie "C987" explizit angeben müssen. –

+0

@ user1170330 - Nein, Sie müssen die Feld-/Spaltennamen speziell auflisten. –

Verwandte Themen