2016-03-24 15 views
1

Meine Tabellenstruktur ist unten. Das ma_symbol und ma_date sind Primärschlüssel für diese Tabelle.Pull-Zeilen, die gleich sind Max. Datum

ma_symbol | ma_date | ma 
     A 2015-03-01 1 
     A 2016-04-01 2 
     B 2014-01-01 3 
     B 2014-02-02 4 

Für jede ma_symbol möchte ich die Zeilen ziehen, wo ma_date gleich max (ma_date). So wäre das Ergebnis so aussieht aus dem obigen Beispiel:

ma_symbol | ma_date | ma 
     A 2016-04-01 2 
     B 2015-02-02 4 

Ich habe versucht, das folgende Beispiel anzupassen, aber es dauert viel zu lange zu laufen. Diese Tabelle hat 5 Millionen + Datensätze.

Attempted Adapted Query

+0

Bitte senden Sie die Abfrage, die Sie versucht haben (nach der Anpassung aus dem verlinkten Post). Die Abfrage im verknüpften Post ist irrelevant. Veröffentlichen Sie Ihre Bemühungen, die Tabelle abzufragen; Wir können Ihnen nicht sagen, was Sie in Ihrem Code anders machen könnten, wenn Sie Ihren Code nicht angeben. –

Antwort

0

Versuchen Sie folgendes:

SELECT t1.* 
FROM tbl t1 INNER JOIN 
    (SELECT ma_symbol, MAX(ma_date) AS max_ma_date FROM tbl GROUP BY ma_symbol) t2 
    ON t1.ma_symbol = t2.ma_symbol AND t1.ma_date = t2.max_ma_date; 

diese Abfrage in Ihrer Umgebung ausführen zu können, ändern tbl Ihren realen Tabellennamen.