Gemoje,
Ich möchte einen besonderen INSERT SELECT durchführen
INSERT INTO tbl_temp2 (fld_id)
SELECT tbl_temp1.fld_order_id
FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;
so stehts auf der dev.mysql.com
aber wie kann ich eine mischung aus
INSERT VALUES('neuer wert') und SELECT bilden, so dass ich einen ganzen Datensatzblock kopieren kann bis auf eine spalte. die soll nämlich einen neuen wert bekommen. es handelt sich dabei aber nicht um den Primary Key.
Beispiel
|-- Primarykey
| |-- Wer der geändert werden soll
| |
a | b | c | d |
1 | 5 | 6 | 3 |
2 | 4 | 5 | 3 |
3 | 7 | 2 | 3 |
4 | 5 | 1 | 4 |
5 | 4 | 2 | 4 |
6 | 7 | 3 | 4 |
a ist ja wie bereits erwähnt der primary_key mit auto_increment und beim ausführen der, ich nenns mal, "Duplicate-Aktion", soll der auch schön weiter hochzählen... alles ganz normal
b und c sind die eigentlichen daten (davon gibts aber 10 Spalten, daher bin ich zu faul vorher einen Select * durchzuführen, da es zuviel schreibarbeit wäre (mir ist auch klar das dieses Posting mich zwar noch mehr Zeit kostet, aber wenn mans einmal weis... :D ))
d ist ein feld welches bestimmte Datensätze "zusammenhält". Es Groupt gewisse Daten (...)
Dieser Wert soll bei der Duplicate-Aktion geändert werden.
Beispiel: Ich möchte nun ein Duplicate vornehmen mit folgendem Insert-Select:
Insert (...) SELECT * FROM tbl WHERE d=4
(aber als ergebnis möchte ich dann folgendes haben:)
a | b | c | d |
1 | 5 | 6 | 3 |
2 | 4 | 5 | 3 |
3 | 7 | 2 | 3 |
4 | 5 | 1 | 4 | <-
5 | 4 | 2 | 4 | <-
6 | 7 | 3 | 4 | <-
7 | 5 | 1 | 5 | <-
8 | 4 | 2 | 5 | <-
9 | 7 | 3 | 5 | <-
wie geht das?
ist mein Problem überhaupt verstanden worden? :D
ixen