none
Visualizar registros que contengan un campo duplicado en una tabla RRS feed

  • Pregunta

  • Buenas a tod@s necesito generar una consulta a mi tabla (base de datos MySql) y visualizar todos los registros que contenga un campo duplicado, el detalle es que al hacer la consulta no se exactamente cual es el campo duplicado a buscar por lo que necesito que me genere todos los que tengan ese campo repetido, por ejemplo si mi tabla es de nombres de personas necesito generar una consulta que me muestre los nombres completos de las personas que tienen apellidos repeditos.

    Nombre          apellido1            apellido2

    Juan              Perez                   Lagos

    Ronald          Cruz                     Chavarria

    Cristian        Perez                   Mora

    Manuel         Morales                Zamora

    Cristofer       Cruz                    Martinez

    En este caso necesitaria obtener el nombre completo de las personas que el primer apellido se repite

    Juan Perez Lagos

    Cristian Perez Mora

    Ronal Cruz Chavarria

    Cristofer Cruz Martinez

    No necesito contarlos sino mostrar la información, si tengo que generar una consulta por separado por cada apellido repetido porque no hay forma de obtenerlos todos juntos ni modo tendría que hacerlo.


    Frank Cruz

    martes, 5 de diciembre de 2017 16:44

Respuestas

  • obtener el nombre completo de las personas que el primer apellido se repite

    Te pongo un ejemplo que funcionaria en SQL Server. Me imagino que en MySql se podra hacer lo mismo o muy parecido

    Select distinct a.Nombre, a.apellido1, a.apellido2
    from laTabla as a
    join latabla as b on a.apellido1 = b.apellido1
    where a.Id <> b.Id
    El campo "Id" que he puesto al final es la clave primaria de la tabla. Esa condicion sirve para evitar que cada registro se empareje consigo mismo.

    • Marcado como respuesta Frank Jarquin martes, 5 de diciembre de 2017 20:36
    martes, 5 de diciembre de 2017 17:08
  • Puedes aplicar una consulta como esta:

    SELECT Nombre & " " & Apellido1 & " " & Apellido2 AS Expr1
    FROM Tabla1
    WHERE Apellido1 In 
    (SELECT Apellido1 FROM Tabla1
    GROUP BY Apellido1
    HAVING Count(Apellido1)>1)
    ORDER BY Apellido1


    Saludos, Javier J

    • Marcado como respuesta Frank Jarquin martes, 5 de diciembre de 2017 18:38
    martes, 5 de diciembre de 2017 17:10
  • Si lo hicieras con el método que yo te puse, bastaría con que en el "on" pusieras los dos apellidos:

    ... join latabla as b on a.apellido1 = b.apellido1 and a.apellido2 = b.apellido2

    • Marcado como respuesta Frank Jarquin martes, 5 de diciembre de 2017 20:42
    martes, 5 de diciembre de 2017 19:43

Todas las respuestas

  • obtener el nombre completo de las personas que el primer apellido se repite

    Te pongo un ejemplo que funcionaria en SQL Server. Me imagino que en MySql se podra hacer lo mismo o muy parecido

    Select distinct a.Nombre, a.apellido1, a.apellido2
    from laTabla as a
    join latabla as b on a.apellido1 = b.apellido1
    where a.Id <> b.Id
    El campo "Id" que he puesto al final es la clave primaria de la tabla. Esa condicion sirve para evitar que cada registro se empareje consigo mismo.

    • Marcado como respuesta Frank Jarquin martes, 5 de diciembre de 2017 20:36
    martes, 5 de diciembre de 2017 17:08
  • Puedes aplicar una consulta como esta:

    SELECT Nombre & " " & Apellido1 & " " & Apellido2 AS Expr1
    FROM Tabla1
    WHERE Apellido1 In 
    (SELECT Apellido1 FROM Tabla1
    GROUP BY Apellido1
    HAVING Count(Apellido1)>1)
    ORDER BY Apellido1


    Saludos, Javier J

    • Marcado como respuesta Frank Jarquin martes, 5 de diciembre de 2017 18:38
    martes, 5 de diciembre de 2017 17:10
  • Excelente, muchas gracias Javier Jimenez.

    Frank Cruz

    martes, 5 de diciembre de 2017 18:39
  • Pregunta Javier tengo los campos separados de apellido1 y apellido 2 como sería la consulta en caso de que necesitara obtener las personas con los dos apellidos iguales, por ejemplo

    Carlos Martinez Porras

    Miguel Martinez Porras

    Juan Diego Martinez Porras.


    Frank Cruz

    martes, 5 de diciembre de 2017 18:57
  • Si lo hicieras con el método que yo te puse, bastaría con que en el "on" pusieras los dos apellidos:

    ... join latabla as b on a.apellido1 = b.apellido1 and a.apellido2 = b.apellido2

    • Marcado como respuesta Frank Jarquin martes, 5 de diciembre de 2017 20:42
    martes, 5 de diciembre de 2017 19:43
  • Excelente lo probé con su metodo y me funcionó. Alberto Población.

    Frank Cruz

    martes, 5 de diciembre de 2017 20:42