2010-12-10 10 views
0

Je veux obtenir la valeur la plus élevée, mais le groupe par un autre champ sur la même table ex:obtenir la ligne avec la valeur la plus élevée dans MySQL

SEQID + fileid + nom

1 | 1 | n1 
2 | 1 | n2 
3 | 2 | n3 
4 | 3 | n4 
5 | 3 | n5 

le résultat doit être

SEQID + fileid + Nom

2 | 1 | n2 
3 | 2 | n3 
5 | 3 | n5 

Note: tout le champ doit b affichage électronique en utilisant comme select * Je vais apprécier toute help.tnx

+0

un peu de mise en forme serait certainement aider .. – pavanred

+0

De quoi vous regroupez-vous? –

+0

groupe par fileid et le seqid est pour la valeur maximale – ace

Répondre

2

que diriez-vous quelque chose comme

SELECT t.* 
FROM Table t INNER JOIN 
     (
      SELECT fileid, 
        MAX(seqid) Maxseqid 
      FROM Table 
      GROUP BY fileid 
     ) m ON t.fileid = m.fileid 
      AND t.seqid = m.Maxseqid 
0
SELECT seqid, fileid, name 
FROM tbl JOIN (
    SELECT MAX(seqid) maxSeq, fileid fileid 
    FROM tbl 
    GROUP BY fileid 
    ) tg ON tml.seqid = tg.maxSeq AND tbl.fileid = tg.fileid 
0

Décrivez exactement ce dont vous avez besoin, fournir plus grande table, et une table de résultat, aussi je ne l'obtenir ce que vous voulez dire du tout valeur la plus élevée, mais le groupe par un autre champ, valeur la plus élevée de quelle colonne? Dans votre résultat, vous mentionnez 4 | 3 | n5, pourquoi pas 5 | 3 | n5 si vous dites «plus haut»?

ok si vous l'avez édité ..

semble assez simple quelque chose comme

 select seqid, filed,name from table t1 join 
(select max(seqid) seqid from table group by fileid) as t2 on t2.seqid=t1.seqid 

si SEQID est PK vous ne avez pas besoin quoi que ce soit, mais je ne PK obtenir pourquoi voudriez-vous rejoindre sur 2 champs à la place de seulement PK

+0

désolé je manque tapez ma question, donc je l'ai édité à nouveau.tnx – ace

Questions connexes