Wie wähle ich nur die Zeile mit der maximalen Sequenz, ohne eine Unterabfrage zu verwenden?

8

Ich versuche nur die Zeile mit dem höchsten Seq für jede ID auszuwählen

%Vor%

Dies scheint zu funktionieren

%Vor%

Aber ist das der beste Weg, der einzige Weg? Ich mag es nicht, Unterabfragen zu verwenden, wenn ich nicht muss, und ich erinnere mich, dass Sie etwas verwenden können, aber ich vergesse, was es ist. Irgendeine Idee?

    
jenswirf 31.10.2012, 08:22
quelle

3 Antworten

5

Angenommen, SQL-Server (& gt; = 2005) oder Oracle (10g?):

%Vor%

ROW_NUMBER gibt die fortlaufende Nummer einer Zeile in einer Partition einer Ergebnismenge zurück .

Bearbeiten : funktioniert auch in Oracle, wie Sie hier sehen können: Ссылка

    
Tim Schmelter 31.10.2012, 08:25
quelle
1

Im Allgemeinen mussten Sie Fensterfunktionen oder Ranking-Funktionen verwenden - Rank() , Row_number() , etc.

%Vor%

Dies wird in SQL Server 2005+ funktionieren. In Oracle müssen Sie möglicherweise die Feldnamen explizit angeben, anstatt *

    
podiluska 31.10.2012 08:26
quelle
1

Falls Sie ein RDBMS verwenden, das keine Fensterfunktionen unterstützt, können Sie Folgendes verwenden:

%Vor%

Es beinhaltet immer noch eine Unterabfrage, aber ich sehe keinen Weg, dies ohne einen zu tun, noch verstehe ich wirklich, warum Sie sie vermeiden möchten.

    
GarethD 31.10.2012 08:47
quelle