Excluindo arquivos duplicados
com em pesquisa na internet achei este código que verifica arquivos duplicados más, aparece somente códigos que não são duplicados..
Tenho a tabela OS e o campo ID_OS
más nela tem registros duplicados de mesmo código..
estou usando o SQL EDITOR do IBXpert e gostaria de ver quais numeros do ID_OS esta duplicado e poder exclui-los, parece ser simples más num to dando conta não...
vlw t+
SELECT COUNT(*) FROM os GROUP BY DESCRICAO HAving count(ID_OS)>1
Tenho a tabela OS e o campo ID_OS
más nela tem registros duplicados de mesmo código..
estou usando o SQL EDITOR do IBXpert e gostaria de ver quais numeros do ID_OS esta duplicado e poder exclui-los, parece ser simples más num to dando conta não...
vlw t+
Gilmar Moraes
Curtidas 0
Respostas
Thiago Irrazabal
07/11/2013
Bom dia, já tentou assim?
Att,
Thiago Irrazabal de Oliveira.
SELECT ID_OS, COUNT(*) FROM OS GROUP BY 1 HAVING COUNT(*) > 1
Att,
Thiago Irrazabal de Oliveira.
GOSTEI 0
Gilmar Moraes
07/11/2013
Bom dia, já tentou assim?
Amigo, deu certinho..más como faço para excluir os duplicados..só para se ter uma idéia tem arquivos com 7 ocorrencia de duplicidade..vlw mesmo
Att,
Thiago Irrazabal de Oliveira.
SELECT ID_OS, COUNT(*) FROM OS GROUP BY 1 HAVING COUNT(*) > 1
Amigo, deu certinho..más como faço para excluir os duplicados..só para se ter uma idéia tem arquivos com 7 ocorrencia de duplicidade..vlw mesmo
Att,
Thiago Irrazabal de Oliveira.
pesquisando achei este codigo em doc aki do forum mesmo..
Delete From os t1 Where rowid < (Select max(rowid) From os t2 Where t1.primary_key = t2.primary_key);
más minha dúvida,... não atribuí chaves primárias para poder fazer a copia do bando de dados, más codigo acima parecer ser obrigatorio isso..más entendo que não era para existir duplicidade de um mesmo codigo..entãi isso não faria muito sentido..
GOSTEI 0
Russimar Silva
07/11/2013
Mensagem com o usuário errado! :/
GOSTEI 0
Thiago Irrazabal
07/11/2013
Segue o script para exclusão dos registros duplicados.
Att,
Thiago Irrazabal de Oliveira.
DELETE FROM OS WHERE ID_OS IN (SELECT ID_OS FROM OS GROUP BY ID_OS HAVING COUNT(*) > 1);
Att,
Thiago Irrazabal de Oliveira.
GOSTEI 0
Gilmar Moraes
07/11/2013
Segue o script para exclusão dos registros duplicados.
Att,
Thiago Irrazabal de Oliveira.
DELETE FROM OS WHERE ID_OS IN (SELECT ID_OS FROM OS GROUP BY ID_OS HAVING COUNT(*) > 1);
Att,
Thiago Irrazabal de Oliveira.
SELECT ID_OS, COUNT(*) FROM OS GROUP BY 1 HAVING COUNT(*) > 1; DELETE FROM OS WHERE ID_OS IN (SELECT ID_OS FROM OS GROUP BY ID_OS HAVING COUNT(*) > 1);
então..
precisa destes dois códigos ou só o ultimo
dá este erro
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 5, column 1.
DELETE.
GOSTEI 0
Alessandro Yamasaki
07/11/2013
O último SQL é a exclusão dos seus registros conforme as dicas dos colegas. Sozinho ele funciona?:
GOSTEI 0
Thiago Irrazabal
07/11/2013
O select era apenas para te mostrar quais os registros, o delete tu tem que passar no executor de scripts (CTRL + F12), ele sozinho é claro...
Att,
Thiago Irrazabal de Oliveira.
Att,
Thiago Irrazabal de Oliveira.
GOSTEI 0
Gilmar Moraes
07/11/2013
O select era apenas para te mostrar quais os registros, o delete tu tem que passar no executor de scripts (CTRL + F12), ele sozinho é claro...
Att,
Thiago Irrazabal de Oliveira.
Att,
Thiago Irrazabal de Oliveira.
Amigo..deu tudo certo e funcionou perfeito..muito obrigado pela ajuda..t+
GOSTEI 0
Gilmar Moraes
07/11/2013
O select era apenas para te mostrar quais os registros, o delete tu tem que passar no executor de scripts (CTRL + F12), ele sozinho é claro...
Att,
Thiago Irrazabal de Oliveira.
Att,
Thiago Irrazabal de Oliveira.
estou prescisando de um infomarção boba más nem sei por onde começo ..nesta mesma tabela precisei inserir um campo que se chama ENTREGUE que vai receber valores 0 e 1, de inicio queria que todos os campos recebecem o valor 0 tem como fazer isso em SQL sem prescisar programar no delphi ?
GOSTEI 0
Alex Lekao
07/11/2013
Oi Bom dia!!
Da para vc colocar na campo, uma informacao como default zero.
Da para vc colocar na campo, uma informacao como default zero.
GOSTEI 0
Gilmar Moraes
07/11/2013
Oi Bom dia!!
Da para vc colocar na campo, uma informacao como default zero.
Da para vc colocar na campo, uma informacao como default zero.
uso o IBXPERT.. como faço isso ?
GOSTEI 0
Thiago Irrazabal
07/11/2013
ALTER TABLE OS ADD ENTREGUE INTEGER DEFAULT 0;
Att,
Thiago Irrazabal de Oliveira.
GOSTEI 0
Deivison Melo
07/11/2013
ou sempre que efetuar as pesquisas fazer o seguinte:
O Comando COALESCE faz isso...
select COALESCE(ENTREGUE,0) ENTREGUE from OS
O Comando COALESCE faz isso...
GOSTEI 0
Gilmar Moraes
07/11/2013
ou sempre que efetuar as pesquisas fazer o seguinte:
O Comando COALESCE faz isso...
select COALESCE(ENTREGUE,0) ENTREGUE from OS
O Comando COALESCE faz isso...
tipo..na verdade é o seguinte, tenho duas tabelas que quero integrar em apenas uma, tenho uma tabela arquivo morto e uma tabela OS. No arquivo morto, todos os registros (1500 + ou -) receberão no seu campo ENTREGUE igual a 1 ena outra tabela OS receberá 0 e depois as dua tabelas será exportada para penas uma..onde os registros que receberam 1 será os dados baixa e os 0 será os em aberto..neste caso vc falou alguma coisa sobre pesquisa..num teria como já lançar o valor sem prescisar desta busca..estava pensando em programae no delphi um while para fazer isso más acho que em sql é muito mais rápido..vlw
GOSTEI 0
Gilmar Moraes
07/11/2013
ALTER TABLE OS ADD ENTREGUE INTEGER DEFAULT 0;
Att,
Thiago Irrazabal de Oliveira.
dá este erro..
This operation is not defined for system tables.
unsuccessful metadata update.
STORE RDB$RELATION_FIELDS failed.
attempt to store duplicate value (visible to active transactions) in unique index "RDB$INDEX_15".
esta é uma tabela antiga que se chama ORCAMENTO_OFIC_ELET e o campo BAIXA
o codigo que deu o erro ficou assim.
ALTER TABLE ORCAMENTO_OFIC_ELET ADD BAIXA INTEGER DEFAULT 0;
vlw
GOSTEI 0
Alex Lekao
07/11/2013
Oi bom dia!!!
Verifica se ja nao tem o campo, se nao em engano a mensagem esta indicando isso.
se ja tiver muda o add para o camomando de alterar a coluna e ve se da certo.
Verifica se ja nao tem o campo, se nao em engano a mensagem esta indicando isso.
se ja tiver muda o add para o camomando de alterar a coluna e ve se da certo.
GOSTEI 0