Tenho uma tabela com milhões de registros e quero pesquisar nomes. É possível dizer que apenas a primeira correspondência de cada registro para os nomes '12' e '23' deve ser exibida?
SELECT * FROM TABLE_A WHERE NAME IN ('12', '23')
Exemplo:
TABELA_A
EU IA | Nome |
---|---|
1 | 12 |
2 | 23 |
3 | 12 |
4 | 24 |
5 | 25 |
Os resultados esperados devem ser apenas ids: 1 ou 3 e 2
Você pode determinar qual registro é considerado o “primeiro” especificando a ordem em que os registros são classificados.
ROW_NUMBER() atribui um número exclusivo a cada linha dentro de uma partição de um conjunto de resultados.
Não
FETCH FIRST, LIMIT 1, TOP, ROWNUM
resolve seus casos de uso?SELECT * FROM TABLE_A WHERE NAME IN ('12', '23') FETCH FIRST 1 ROWS ONLY
Deveria trabalhar.Isso pode ser feito usando a função de janela
ROW_NUMBER()
da seguinte maneira:Demonstração aqui