solo repetir repetidos registros mostrar menos evitar eliminar duplicados dejando contar consulta campos agrupar sql ms-access count ms-access-2010 duplicate-data

repetir - sql eliminar registros duplicados menos uno



consulta que contaría e incrementaría el número de instancias duplicadas de ese registro (1)

Usando Access 2010.

Entonces si tuviera una mesa

COL1 A B A C A

y al ejecutar la consulta obtendría el resultado en COL2 donde ''A'' se duplica tres veces y su valor COL2 se incrementa a su vez.

COL1 | COL2 A | 1 B | 1 A | 2 C | 1 A | 3


Agrega un campo a tu mesa. Elija Autonumérico como su tipo de datos y conviértalo en la clave principal de la tabla. Llamé a la identificación de campo, por lo que mi versión de los datos de muestra se ve así ...

ID COL1 1 A 2 B 3 A 4 C 5 A

La instrucción SELECT continuación devuelve este conjunto de resultados ...

ID COL1 COL2a COL2b 1 A 1 1 2 B 1 1 3 A 2 2 4 C 1 1 5 A 3 3

COL2a y COL2b muestran 2 métodos para lograr el mismo resultado. DCount es específico de acceso y requiere citas alrededor de los valores de texto m.COL1 . El segundo enfoque, COL2b , usa una subconsulta correlacionada, por lo que podría funcionar en una base de datos diferente si así lo desea. Y con ese enfoque, no necesitarás molestarte en cotizar valores de texto.

Cualquiera de los enfoques requiere básicamente que el motor db ejecute una consulta adicional para cada fila del conjunto de resultados. Entonces, con una gran mesa, el rendimiento será una preocupación. La indexación ayudará allí. Agregue un índice en COL1 si aún no hay uno. ID ya tiene un índice ya que es la clave principal.

Si no puede agregar un campo y la tabla no incluye otro campo adecuado, entonces creo que no tiene suerte. No podrá obtener lo que desea con una consulta de Access.

SELECT m.ID, m.COL1, DCount( "*", "MyTable", "COL1 = ''" & m.COL1 & "'' AND ID <= " & m.ID ) AS COL2a, ( SELECT Count(*) FROM MyTable AS m2 WHERE m2.COL1 = m.COL1 AND m2.ID <= m.ID ) AS COL2b FROM MyTable2 AS m ORDER BY m.ID;