Procedures e busca de registros duplicados em SQL
Como realizar buscas de registros duplicados e o que é e como se faz um procedure em SQL.Por Claudio
Publicado em: 11/2/08
Cláusula Procedure
Esta cláusula é pouco usual e se utiliza para criar uma consulta ao mesmo tempo que se executa, opcionalmente define os parâmetros da mesma. Sua sintaxe é a seguinte:
PROCEDURE NomeConsulta ParÂmetro1 tipo1, .... ,
ParâmetroN tipon ConsultaSQL
Onde:
| NomeConsulta | É o nome com o qual se salvará a consulta no banco de dados. |
| Parâmetro | É o nome de parâmetro ou dos parâmetros de tal consulta. |
| Tipo | É o tipo de dados do parâmetro |
| ConsultaSQL | É a consulta que se deseja gravar e executar. |
PROCEDURE
ListaCategorias;
SELECT DISTINCTROW
NomeCategoria, IdCategoria
FROM
Categorias
ORDER BY
NomeCategoria
(Atribui o nome Lista_de_categorias à consulta e a executa.)
PROCEDURE
Resumo
DataInicio DATETIME,
DtaaFinal DATETIME;
SELECT DISTINCTROW
DataEnvio, IdPedido, ImportePedido, Format(DataEnvio, "yyyy") AS Ano
FROM
Pedidos
WHERE
DataEnvio Between DataInicio And DataFinal
(Atribui o nome Resumo à consulta e inclui dois parâmetros.)
Busca de Registros Duplicados
Para gerar este tipo de consultas o mais simples é utilizar o assistente de consultas de Access, editar a sentença SQL da consulta e colá-la em nosso código. Não obstante, este tipo de consulta se consegue da seguinte forma:
SELECT DISTINCT Lista de Campos a Visualizar FROM Tabela
WHERE CampoDeBusca In
(SELECT CampoDeBusca FROM Tabela As pseudônimo
GROUP BY CampoDeBusca HAVING Count(*) > 1 )
ORDER BY CampoDeBusca
Um caso prático, se desejarmos localizar aqueles empregados com nome igual e visualizar seu código correspondente, a consulta seria a seguinte:
SELECT DISTINCT
Empregados.Nome, Empregados.IdEmpregado
FROM
Empregados
WHERE
Empregados.Nome
In (
SELECT Nome FROM Empregados As Tmp GROUP BY Nome HAVING Count(*) > 1)
ORDER BY
Empregados.Nome
Comentários do artigo