Mailinglisten-Archive |
Hallo Liste, ich möchte aus einer recht umfangreichen Tabelle jeweils den Datensatz bekommen, der in einem Feld den höchsten Wert hat. Dabei bin ich auf ein Problem gestossen: Die in meinem gesunden SQL Halbwissen zusammengestellte Abfrage SELECT id,grp,d FROM t GROUP BY grp HAVING d=max(d) ORDER BY id scheint nicht das gewünschte Ergebnis zu liefern. Hier mal meine Testdaten: CREATE TABLE t ( id varchar(32) NOT NULL default '', grp varchar(255) NOT NULL default '', d double NOT NULL default '0', PRIMARY KEY (id) ) TYPE=MyISAM; # # Daten für Tabelle `t` # INSERT INTO t VALUES ('1', '1', '55'); INSERT INTO t VALUES ('2', '2', '35.2'); INSERT INTO t VALUES ('3', '1', '77'); INSERT INTO t VALUES ('4', '2', '23.1'); INSERT INTO t VALUES ('5', '3', '60.2'); Ich habe nun folgende Abfrage: SELECT id,grp,d FROM t GROUP BY grp HAVING d=max(d) ORDER BY id Als Ergebnis habe ich folgendes erwartet: id grp d ----------- 3 1 77 2 2 35.2 5 3 60.2 Herausgekommen ist aber: id grp d ----------- 2 2 35.2 5 3 60.2 Es funktioniert immer solange der höchste Wert der erste in der Tabelle ist ... Mache ich da einen grundsätzlichen Denkfehler, oder kann man das Problem auch anders lösen? Mit freundlichen Grüssen Thilo Haas -- Haas Media GmbH | Phone +49(0)511 27038-70 Agentur für moderne Medien | Fax +49(0)511 27038-69 Hindenburgstrasse 38 | Web http://www.haas-media.de/ D-30175 Hannover | Mail haas at haas-media.de PGP-FP: 8C7C FD86 3A0B D4D9 3A73 1C8F 629D 60ED BDE9 2B48 -- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive