Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Filipe_Moraes

Interpretar instrução sql

Recommended Posts

Olá pessoal, geralmente não faço isso, mas gostaria de saber como funciona essa instrução, isso é para apagar registros repetidos na base de dados, mas não consegui desvendar isso e não sei o que posso ou não alterar.

 

delete from X where rowid in ( select rowid from X minus select min(rowid) from X group by name, number ) delete from emp1 e1 where rowid > (select min(rowid) from emp1 e2 where e1.empid= e2.empid )

sei que o X é os meus campos

sei que o rowid é a minha tabela

a duvida é, o que é essa parte? "from X group by name, number "? que eu saiba name e number devem ser o nome dos campos para efeito do exemplo, correto?

o que é o emp1 seguido do e1? "delete from emp1 e1 where rowid" ? o emp1 é o nome da tabela, correto? o e1 representa o que?

 

Agradecia a ajuda pessoal!

Compartilhar este post


Link para o post
Compartilhar em outros sites

"from X group by name, number "

para mim esse group by não faz o menor sentido

 

"delete from emp1 e1 where rowid"

o e1 é o alias da tabela emp1

Compartilhar este post


Link para o post
Compartilhar em outros sites

uma dúvida... essa query q você pegou de deduplicar informacao foi escrita para oracle (pl/sql)? Bom... acho q sim. Partindo do principio que seja...

 

O ROWID é um identificador unico, no servidor Oracle, por servidor.. ou seja, naum existira no mesmo servidor um ROWID igual. Todo registro tem um ID e ele é gerenciado pelo BD, diferente do sequence, chaves primarias, etc....

 

o X na verdade é uma tabela

o ROWID é o identificador unico

o NAME, NUMBER é o campo usado para identificar se o registro é unico... resumindo, caso o registro tenha o mesmo nome e numero eu considero ele duplicado

 

o processo eh simples...

você tem 1 tabela com registros duplicados.

você sabe que identifica um registro duplicados caso eles tenham uma chave em comum (no caso acima é o NAME e o NUMBER)

agora imagine a situacao

rowid   name   number  endereco   telefone   
1A3C8D,teste,00001,rua abc,  1133330000
1A3C8E,teste,00001,rua abc,  1133330000
1A3C8F,teste,00001,rua xpto, 113998766
sao registros diferentes, mas caso voce considere sua chave de NAME e NUMBER, posso assumir que sao registros iguais

 

o seu processo vai identificar qual o menor ROWID dos registros iguais... nesse caso o 1A3C8D

em seguida, ele vai apagar todos os demais pois sao maiores que o menor definido acima (apagará os registros 1A3C8E e 1A3C8F)

 

confuso?

 

abs,

ska!

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa ska, isso penso que é em sql (mysql), mas pronto, valeu pela ajuda, agora so uma duvida, o rowid é um identificador que nós criamos na BD ou é o sistema que cria e oculta isso?

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

o rowid é um identificador que nós criamos na BD ou é o sistema que cria e oculta isso?

é o banco que cria

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.