Höchsten Wert updaten

Neuk

Erfahrenes Mitglied

Ich möchte gerne einen Datensatz in meiner Tabelle updaten, der den höchsten Wert einer bestimmten Tabelle hat.

Mal ein kurzes Beispiel:
Code:
mysql> DESCRIBE problem;
+-------+------------+------+-----+---------+-------+
| Field | Type       | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| wert1 | bigint(20) |      |     | 0       |       |
| wert2 | char(3)    |      |     | 0       |       |
+-------+------------+------+-----+---------+-------+
2 rows in set (0.00 sec)


mysql> SELECT * from problem;
+-------+-------+
| wert1 | wert2 |
+-------+-------+
| 100   | no    |
| 30    | no    |
| 150   | no    |
+-------+-------+
3 rows in set (0.01 sec)
Den höchsten Wert zu ermitteln via SELECT ist noch relativ einfach:
Code:
mysql> SELECT MAX(wert1), wert2 FROM problem GROUP BY wert2;
+------------+-------+
| MAX(wert1) | wert2 |
+------------+-------+
|        150 | no    |
+------------+-------+
1 row in set (0.00 sec)
Nun möchte ich aber den dazugehörigen "wert2" ändern. Leider weiss ich nun nicht wie ich den UPDATE Syntax gestalten soll.
Code:
mysql> UPDATE problem SET wert2="yes" WHERE MAX(wert1);
ERROR 1111: Invalid use of group function
Das bringt mir leider nur eine Fehlermeldung.
Vielleicht liegt es auch daran, dass es spät ist, mir die Augen langsam schmerzen und ich morgen wieder zu Schule muss. ;)

Ich hoffe wir können eine Lösung finden.
 
Zuletzt bearbeitet:
Hallo,
wenn ich die Frage richtig verstanden habe, könnte eine Lösung ungefähr so aussehen:

UPDATE problem SET wert2="yes"
WHERE wert1 =
SELECT MAX(wert1) FROM problem GROUP BY wert2;
 
Anmerkung:
Wobei der Subselect in Klammern stehen sollte. ;-)
PHP:
UPDATE problem SET wert2="yes"
WHERE wert1 =
(SELECT MAX(wert1) FROM problem GROUP BY wert2);

mfg horusab
 
Code:
mysql> UPDATE problem SET wert2 = "yes" WHERE wert1 = ( SELECT MAX( wert1 ) FROM problem );
ERROR 1064: You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT MAX(wert1) FROM problem )' at line 1
Leider werden Subselects erst aber MySQL 4.1 unterstützt und ich hab natürlich Version 4.0 *grummel*

Also komm ich so nicht weiter *schnief*
 
Warum macht ihr das denn mit Subselect?
Müsste doch auch so gehen:
PHP:
UPDATE problem 
SET wert2="yes" 
WHERE wert1 = MAX(wert1);
 
Code:
mysql> UPDATE problem SET wert2="yes" WHERE wert1 = MAX(wert1);
ERROR 1111: Invalid use of group function
Geht leider auch nicht!

Ich schätze, dann werd ich wohl zwei Queries machen müssen:

Code:
SELECT MAX(wert1) from problem;
--> in eine PHP Variable speichern ($max_wert1)

UPDATE problem SET wert2 = "yes" WHERE wert1 = $max_wert1;
Is leider umständlich, aber so funktioniert es wenigstens.

Vielleicht weiss ja jemand noch eine bessere, schnellere Variante?
 
Zurück