Frage:
Angenommen, die Datenbanktabelle enthält Benutzeranmeldeinformationen, wie wir das letzte Anmeldedatum für jeden Benutzer abrufen? In Anbetracht der Tatsache, dass es doppelte Anmeldedaten geben kann.
Lösung:
Es gibt zwei allgemeine Möglichkeiten, dieses Problem zu lösen:
Methode 1: Unterabfrage mit innerer Join
Diese Methode verwendet eine Unterabfrage, um das letzte Anmeldedatum für jeden Benutzer zu identifizieren, und wird dann verwendet, um die Haupttabelle zu filtern:
select t.username, t.date, t.value
from MyTable t
inner join (
select username, max(date) as MaxDate
from MyTable
group by username
) tm on t.username = tm.username and t.date = tm.MaxDate
Methode 2: Fensterfunktion
]Für Datenbanken, die Fensterfunktionen unterstützen, kann eine effizientere Methode verwendet werden:
select x.username, x.date, x.value
from (
select username, date, value,
row_number() over (partition by username order by date desc) as _rn
from MyTable
) x
where x._rn = 1
Diese Methode verwendet Zeilennummern, die auf Partitionsdaten sortieren, wobei dem letzten Datum jedes Benutzers eine Stufe 1 zugewiesen wird.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3