"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como recuperar com eficiência a data e o valor mais recentes de registro para cada usuário em um banco de dados?

Como recuperar com eficiência a data e o valor mais recentes de registro para cada usuário em um banco de dados?

Postado em 2025-03-04
Navegar:193

How to Efficiently Retrieve the Latest Record Date and Value for Each User in a Database?

extraindo a data e o valor mais recentes de entrada para cada usuário

Este guia demonstra como consultar com eficiência uma tabela de banco de dados de entradas de login do usuário para recuperar a data mais recente e seu valor associado para cada usuário. Vamos explorar dois métodos: uma abordagem de junção tradicional e um método mais robusto usando funções de janela.

Método 1: Juntar -se ao Subquery

Uma abordagem comum utiliza uma união interna a uma subconsulta para encontrar a data máxima para cada usuário:

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

Esta consulta recupera efetivamente o registro mais recente para cada nome de usuário. No entanto, uma desvantagem em potencial é que ela pode retornar várias entradas se vários registros compartilharem a mesma data máxima para um determinado usuário.

Método 2: Funções da janela para manusear datas duplicadas

Para lidar com possíveis datas duplicadas, as funções de janela oferecem uma solução superior:

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

Este método atribui uma classificação exclusiva a cada registro para cada usuário, encomendado por data em ordem descendente. Ao filtrar para linhas com uma classificação de 1 ( _ rn = 1 ), garantimos a recuperação do registro mais recente mais recente, mesmo na presença de várias entradas com a mesma data mais recente. Isso garante precisão e evita a ambiguidade.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3