Heim >Datenbank >MySQL-Tutorial >Wie findet man effizient die aktuellste Position für jedes Wertpapier in einer Datenbank?
Sie versuchen, die aktuellste Position für jedes Wertpapier aus einer bestimmten Tabelle abzurufen. Um dies zu erreichen, können Sie die folgende Abfrage verwenden:
SELECT p1.id, p1.security, p1.buy_date FROM positions p1 LEFT JOIN positions p2 ON p1.security = p2.security AND p1.buy_date < p2.buy_date WHERE p2.id IS NULL;
In dieser Abfrage wird der Left Join verwendet, um jede Zeile in der Positionstabelle mit jeder anderen Zeile mit derselben Sicherheit zu vergleichen. Die Spalte „buy_date“ wird verwendet, um zu bestimmen, welche Zeile die aktuellste ist. Die WHERE-Klausel filtert dann alle Zeilen heraus, die für ihre jeweilige Sicherheit nicht die neuesten sind.
Das Ergebnis dieser Abfrage ist eine Tabelle mit einer Zeile für jede Sicherheit, die die aktuellste ID, Sicherheit usw. enthält buy_date für diese Sicherheit.
Diese Abfrage ist effizienter als der unterabfragebasierte Ansatz, den Sie zuvor versucht haben, da sie nicht mehrere Durchgänge durch die Positionstabelle erfordert. Stattdessen wird ein einzelner Join verwendet, um die aktuellste Zeile für jedes Wertpapier zu identifizieren, wodurch die Verarbeitung bei großen Datenmengen deutlich schneller erfolgt.
Das obige ist der detaillierte Inhalt vonWie findet man effizient die aktuellste Position für jedes Wertpapier in einer Datenbank?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!