Você pode me ajudar com instruções SQL para encontrar duplicatas em vários campos?
Por exemplo, no pseudo-código:
select count(field1,field2,field3)
from table
where the combination of field1, field2, field3 occurs multiple times
e da declaração acima, se houver várias ocorrências, eu gostaria de selecionar todos os registros, exceto o primeiro .
sql
sql-server
tsql
sql-server-2008
JOE SKEET
fonte
fonte
Respostas:
Para obter a lista de campos para os quais existem vários registros, você pode usar ..
Verifique este link para obter mais informações sobre como excluir as linhas.
http://support.microsoft.com/kb/139444
Editar: como os outros usuários mencionados, deve haver um critério para decidir como você define "primeiras linhas" antes de usar a abordagem no link acima. Com base nisso, você precisará usar uma ordem por cláusula e uma subconsulta, se necessário. Se você puder postar alguns dados de amostra, isso realmente ajudaria.
fonte
Você mencionou "o primeiro", então presumo que você tenha algum tipo de pedido em seus dados. Vamos supor que seus dados sejam ordenados por algum campo
ID
.Esse SQL deve fornecer as entradas duplicadas, exceto a primeira. Basicamente, seleciona todas as linhas para as quais existe outra linha com (a) os mesmos campos e (b) existe um ID menor. O desempenho não será ótimo, mas pode resolver seu problema.
fonte
Esta é uma solução divertida com o SQL Server 2005 que eu gosto. Eu vou assumir que por "para cada registro, exceto o primeiro", você quer dizer que existe outra coluna "id" que podemos usar para identificar qual linha é "primeira".
fonte
Para ver valores duplicados:
fonte
Se você estiver usando o SQL Server 2005 ou posterior (e as tags da sua pergunta indicarem o SQL Server 2008), poderá usar as funções de classificação para retornar os registros duplicados após o primeiro, se o uso de junções for menos desejável ou impraticável por algum motivo. O exemplo a seguir mostra isso em ação, onde também trabalha com valores nulos nas colunas examinadas.
Observe depois de executar este exemplo que o primeiro registro de cada "grupo" é excluído e que os registros com valores nulos são tratados corretamente.
Se você não tiver uma coluna disponível para ordenar os registros em um grupo, poderá usar as colunas de partição por como as colunas de ordenação.
fonte
fonte
tente esta consulta para ter uma contagem sepratley de cada instrução SELECT:
fonte