2016-07-21 14 views
-1

Hier ist meine SQL Abfrage, um eine Zeile in Tabelle gruppiert nach dem maximalen Datum des Einfügens in Tabelle zu finden.Meine Frage ist, wie das zweite Maximum zu finden. Ich meine, wie kann ich diese Abfrage ändern, um die zweite maximale Zeile in jeder Gruppe zu finden.Finden Sie die zweite maximale Gruppe von colume in sql

select symbol,currency_name,country,sell,buy 
from (
    select * 
    from currency_price natural 
    join currency natural join users 
    order by currency_id, cu_date desc,buy,sell,user_id) x 
group by currency_id 

Ich weiß eine Abfrage, um das zweite Maximum zu finden, aber alles bringt mich nicht zu meiner Antwort.

+0

Verwendung „limit 1,1“ in Abfrage – Aravind

+0

Ihre Anfrage ist nicht korrekt, können Sie bitte Ihre korrekte SQL zeigen? – Blank

+0

Ich habe einige Währungs-ID in meiner Tabelle.mit dieser Abfrage gruppiert ich sie nach ID und dann finden Sie jede Währung ID mit maximalem Datum von insert.so die Antwort dieser Abfrage zeigen mir für jede Währung ID nur eine Zeile.aber ich brauche die Sekunde zum Vergleich des Preises jetzt und vorher für jede Währung –

Antwort

1

Aufgrund der Tatsache, Sie nicht aggreagtion Funktion verwenden, scheint Gruppe verwenden, indem Sie in der falschen Art und Weise .. könnte sein, dass Sie statt disticct mit Gruppe .. so sollte Ihre Anfrage

select distinct symbol,currency_name,country,sell,buy 
from (
    select * 
    from currency_price natural 
    join currency natural join users 
    order by currency_id, cu_date desc,buy,sell,user_id) x 

sein und für erhalten Sie dann eine Zeile nicht unterscheidbar

select symbol,currency_name,country,sell,buy 
from (
    select * 
    from currency_price natural 
    join currency natural join users 
    order by currency_id, cu_date desc,buy,sell,user_id) x 

PS verwenden Sie .. Sie haben auch eine natult auch auf Benutzer beitreten (könnte diese Rückkehr unerwartetes Ergebnis sein)

Verwandte Themen