2016-04-06 7 views
1

Mit SQL-Abfrage bekomme ich 100 Ergebniszeilen. Ich muss die einzeilige Position innerhalb dieser 100 Reihen wissen. Ich habe einzigartige Felder, die ich per Schleife überprüfen kann, aber das dauert lange. Gibt es eine Möglichkeit, dass ich die Position eines einzelnen Artikels innerhalb eines abgefragten Ergebnisses abrufen kann?SQLite erhalten einzeilige Position innerhalb der Ergebnisabfrage ohne Verwendung der Schleife

Zum Beispiel: Ich habe Tabelle mit eindeutigen Benutzer-IDs (12, 13, 20, 21, 34, 5). Diese Benutzer werden nach dem Erstellungsdatum sortiert. Wie kann ich Benutzerposition mit id = 34 mit SQL-Abfrage erhalten?

Antwort

2

Die Optimierung der SQL-Abfrage ist immer effizienter, wenn Sie mit großen Ergebnissen arbeiten.

Machen Sie eine select mit where Klausel, in denen werden Sie prüfen, wie viele Benutzer weniger Erstellungsdatum haben als id Eigentümer gewünscht

SELECT 
    count(*) 
FROM 
    table 
WHERE 
    creationDate < (SELECT creationDate FROM table WHERE id = 34) 

Dann wird die Aufzeichnungsposition der Wert von oben wählen (oder müssen Sie add 1 hängt davon ab, ob Sie von 0 oder 1 zählen).


Wenn das Erstellungsdatum wiederholt werden kann, müssen Sie mit dieser Situation umgehen hängt davon ab, wie Sie die Datensätze mit gleichen behandeln creationDate (vielleicht einfach creationDate <= ... genug für Sie ist)

+0

Danke, das hat mein Problem gelöst. –

0

Sie so etwas wie dieses

versuchen können,
SELECT row (SELECT ROW_NUMBER() OVER (ORDER BY columnChoosen) AS row, columnChoosen FROM yourTable) sub WHERE sub.columnChoosen = 34 
Verwandte Themen