son gohan
Erfahrenes Mitglied
Hallo,
ich habe hier mein MySQL Query und wollte euch fragen wie man das richtig schreiben muss mit dem "ON DUPLICATE KEY UPDATE".
Ich probiere schon seit Tagen immer wieder verschiedene Schreibweisen und bekomme Fehlermeldungen das in der MYSQL Query Syntax was falsch ist.
Das Query wie im folgenden Beispiel macht bei allen Feldern "cl" den gleichen Wert, das will ich aber nicht, ich will eigentlich jedes "cl" Feld mit einem eigenen neuen Wert updaten:
Ich habe verschiedene Sachen schon probiert, sowas wie das:
oder sowas:
oder sowas:
Das klappt alles nicht.
Jemand hat mir gesagt ich soll dann jeweils einzelne INSERT INTO Querys senden, aber ist das den von der Performance her eine gute Loesung, in mein Beispiel sieht man das ich 9 Datensaetze mit einem Query updaten will, wenn ich jetzt daraus 9 einzelne INSERt INTO Querys mache kostet das doch 9 mal mehr Resourcen oder ?
Also einfach gefragt wie kann ich das am besten machen die vielen Datensaetze zu updaten? In verschiedenen Beitraegen die ich gefunden habe sagen viele das es mit "ON DUPLICATE KEY UPDATE" am besten ist, aber richtige Beispiele oder Loesungen wie das dann aussieht wenn man mehrere Datensaetze gleichzeitig updaten will fand ich noch nicht.
ich habe hier mein MySQL Query und wollte euch fragen wie man das richtig schreiben muss mit dem "ON DUPLICATE KEY UPDATE".
Ich probiere schon seit Tagen immer wieder verschiedene Schreibweisen und bekomme Fehlermeldungen das in der MYSQL Query Syntax was falsch ist.
Das Query wie im folgenden Beispiel macht bei allen Feldern "cl" den gleichen Wert, das will ich aber nicht, ich will eigentlich jedes "cl" Feld mit einem eigenen neuen Wert updaten:
PHP:
$sql = "INSERT INTO `neue`.`perform` (`ticket`, `zeit`, `typ`, `vl`, `on`, `cl`, `tp`, `st`, `gen`, `strg`, `sym`,
`eaid`) VALUES ('10350694', '1368717554', '1', '0.05000000', '1.29078000', '1.29205000', '0.00000000', '0.00000000', '4.91', 'strategie1', 'rm',
('10370265', '1368619737', '2', '0.05000000', '1.28514000', '1.28560000', '0.00000000', '0.00000000', '-1.79', 'strategie1', 'rm', '1') ,
('10371223', '1368619870', '2', '0.05000000', '1.28512000', '1.28537000', '0.00000000', '0.00000000', '-0.97', 'strategie1', 'rm', '1') ,
('10371312', '1368619879', '2', '0.05000000', '1.28512000', '1.28532000', '0.00000000', '0.00000000', '-0.78', 'strategie1', 'rm', '1') ,
('10371328', '1368619885', '2', '0.05000000', '1.28512000', '1.28532000', '0.00000000', '0.00000000', '-0.78', 'strategie1', 'rm', '1') ,
('10371337', '1368619907', '2', '0.05000000', '1.28514000', '1.28527000', '0.00000000', '0.00000000', '-0.51', 'strategie1', 'rm', '1') ,
('10384040', '1368629502', '2', '0.05000000', '1.28562000', '1.28588000', '0.00000000', '0.00000000', '-1.01', 'strategie1', 'rm', '1') ,
('10387013', '1368632765', '2', '0.05000000', '1.28482000', '1.28572000', '0.00000000', '0.00000000', '-3.50', 'strategie1', 'rm', '1') ,
('11056331', '1370288344', '2', '0.05000000', '1.30738000', '1.30709000', '0.00000000', '0.00000000', '1.11', 'strategie1', 'rm', '1') ON DUPLICATE KEY UPDATE cl=(1.29205000)";
Ich habe verschiedene Sachen schon probiert, sowas wie das:
PHP:
ON DUPLICATE KEY UPDATE cl=(1.29205000),(1.39205000),(1.49205000)";
oder sowas:
PHP:
ON DUPLICATE KEY UPDATE cl=VALUES(1.29205000)+VALUES(1.39205000)+VALUES(1.49205000)";
oder sowas:
PHP:
ON DUPLICATE KEY UPDATE cl=(1.29205000,1.39205000,1.49205000)";
Das klappt alles nicht.
Jemand hat mir gesagt ich soll dann jeweils einzelne INSERT INTO Querys senden, aber ist das den von der Performance her eine gute Loesung, in mein Beispiel sieht man das ich 9 Datensaetze mit einem Query updaten will, wenn ich jetzt daraus 9 einzelne INSERt INTO Querys mache kostet das doch 9 mal mehr Resourcen oder ?
Also einfach gefragt wie kann ich das am besten machen die vielen Datensaetze zu updaten? In verschiedenen Beitraegen die ich gefunden habe sagen viele das es mit "ON DUPLICATE KEY UPDATE" am besten ist, aber richtige Beispiele oder Loesungen wie das dann aussieht wenn man mehrere Datensaetze gleichzeitig updaten will fand ich noch nicht.