1
resposta

rownum com selects especificos

Boa tarde. Não sei se vou conseguir expressar bem a minha duvida, mas tentarei..

Quando damos um select em tudo (select * from) de uma tabela, o resultado da query é ordenado em x. Quando damos um select num determinado campo (select nomedocampo from tabela) a query vem com uma ordenação diferente. Creio que seja porque quando especificamos o campo que queremos, internamente o sql faz um order by.

Dito isso, o que está acontecendo é o seguinte; eu to dando um select num campo especifico (select >embalagem< from tabela_de_produtos) e o resultado da query fica numa determinada ordem, por exemplo em primeiro PET, depois GARRAFA, depois LATA. (Só um exemplo). Mas o rownum não pega a primeira minha dessa minha query especifica. Por algum motivo ele só pega a primeira linha da query antes do order by interno.

Então se eu dou um select assim > SELECT * FROM TABELA_DE_PRODUTOS < a primeira linha da minha query vai ser a com embalagem LATA.

Se eu dou um select assim > SELECT embalagem FROM TABELA_DE_PRODUTOS < a primeira linha da query vai ser a com embalagem PET.

E se eu quiser pegar a primeria linha desse select (SELECT embalagem FROM TABELA_DE_PRODUTOS), que no exemplo é PET, eu teria que dar SELECT embalagem FROM TABELA_DE_PRODUTOS WHERE ROWNUM = 1. Mas o que acontece é que ele não me traz a primeira como sendo PET, de um select especifico. Mas sim a primeira linha sendo LATA, de um select generalizado.

Não sei se consegui me expressar, mas espero que possam entender.

1 resposta

Olá Marcos, boa tarde

Para não ter dúvidas quanto ao ORDEM do resultset exibido na ferramenta, utilize o comando ORDER BY nome_campo (lembrando que ASC é o default)

Portanto, você terá sempre o mesmo resultado, independente de utilizar * ou uma ou duas colunas.

Abs.

Diego