Update mit Subselect Fehler 1093
hambam66
- datenbank
Hallo,
ich möchte in meiner Tabelle, den aktuellsten Eintrag zu einem bestimmten Schlüssel ändern, es kann sich dabei aber um mehrere Datensätze handeln, weil es noch einen zweiten Schlüssel gibt.
Meine Vorstellung war ein Update mit Subquery:
UPDATE tablle A
SET feld = 'bla bla'
WHERE schluessel1 = 'xyz'
and timestamp = (SELECT MAX(B.timestamp)
FROM tabelle B
WHERE A.schluessel1 = B.schluessel1
AND A.schluessel2 = B.schluessel2)
MYSQL mag aber keine Updates, bei denen im Subselect die selbe Tabelle verwendet wird.
Hat jemand noch eine elegantere Lösung, als sich mit
SELECT schluessel2, timestamp
FROM tablle A
WHERE schluessel1 = 'xyz'
and timestamp = (SELECT MAX(B.timestamp)
FROM tabelle B
WHERE A.schluessel1 = B.schluessel1
AND A.schluessel2 = B.schluessel2)
alle schluessel2 mit den dazugehörigen timestamp zu holen und anschliessend den
UPDATE tabelle
WHERE schluessel1= 'xyz'
AND schluessel2= 'schluessel2 aus query1'
and timestamp = 'timestamp aus query1'
für alle schluessel2 durchzuführen.
Danke für Eure Hilfe
hambam66
echo $begrüßung;
ich möchte in meiner Tabelle, den aktuellsten Eintrag zu einem bestimmten Schlüssel ändern, es kann sich dabei aber um mehrere Datensätze handeln, weil es noch einen zweiten Schlüssel gibt.
MYSQL mag aber keine Updates, bei denen im Subselect die selbe Tabelle verwendet wird.
Hat jemand noch eine elegantere Lösung, [...]
Ja, Matt Ryan am 16. Februar 2005 in den Userkommentaren zum Handbucheintrag von UPDATE.
echo "$verabschiedung $name";
echo $begrüßung;
ich möchte in meiner Tabelle, den aktuellsten Eintrag zu einem bestimmten Schlüssel ändern, es kann sich dabei aber um mehrere Datensätze handeln, weil es noch einen zweiten Schlüssel gibt.
MYSQL mag aber keine Updates, bei denen im Subselect die selbe Tabelle verwendet wird.
Hat jemand noch eine elegantere Lösung, [...]Ja, Matt Ryan am 16. Februar 2005 in den Userkommentaren zum Handbucheintrag von UPDATE.
Sorry, aber das Limit = 1 hilft mir nicht weiter, weil ich ja eine unbekannte Anzahl von zweiten Schlüsselargumenten in der Tabelle habe.
Aber trotzdem Danke.
echo "$verabschiedung $name";
echo $begrüßung;
Sorry, aber das Limit = 1 hilft mir nicht weiter, weil ich ja eine unbekannte Anzahl von zweiten Schlüsselargumenten in der Tabelle habe.
Das heißt also, dass es die Kombination aus schluessel1 und schluessel2 und timestamp mehrfach geben kann? Wenn ja, dann kenne ich keine andere Lösung außer Subquery, das ja nicht geht, oder die von dir schon vorgenommene Aufteilung in mehrere Statements. Möglicherweise können dir User-Defined Variables helfen, das Ergebnis der ersten Abfrage auf dem Server zu belassen.
echo "$verabschiedung $name";