SQL - Como saber si un registro tiene campos diferentes?

 
Vista:

Como saber si un registro tiene campos diferentes?

Publicado por Diego (1 intervención) el 22/04/2013 15:16:47
Hola, estoy tratando de armar la siguiente consulta:

Tengo una SELECT que devuelve unos 100 registros, necesito saber si el campo "X" tiene mas de un registro y si esos registros son diferentes entre si, por ejemplo:

Nombre Direccion Edad X
------------------------------------
Juan Laguna 25 40
Juan Laguna 25 30
Juan Laguna 25 30
Juan Laguna 25 20
Juan Laguna 25 10

En este caso en "X" tengo repetido el numero 30, pero son iguales, los que me interesan son los demas porque son diferentes.

Muchas gracias,
Saludos!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Como saber si un registro tiene campos diferentes?

Publicado por leonardo_josue (1173 intervenciones) el 22/04/2013 15:46:35
Hola Diego:

En realidad hay varias formas para hacerlo, pero no me queda claro en realidad qué es lo que pretendes, supongamos que tenemos el siguiente ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
mysql> SELECT * FROM tabla;
+--------+-----------+------+------+
| Nombre | Direccion | Edad | X    |
+--------+-----------+------+------+
| Juan   | Laguna    |   25 |   40 |
| Juan   | Laguna    |   25 |   30 |
| Juan   | Laguna    |   25 |   30 |
| Juan   | Laguna    |   25 |   20 |
| Juan   | Laguna    |   25 |   10 |
| Pedro  | Laguna    |   25 |   30 |
+--------+-----------+------+------+
6 rows in set (0.00 sec)


Observa que agregué un registro extra con un campo X = 30, pero para un nombre distinto (Pedro). Tú podrías hacer algo como esto:

1
2
3
4
5
6
7
8
9
10
11
12
mysql> SELECT * FROM tabla
    -> GROUP BY nombre, direccion, edad, X
    -> HAVING COUNT(*) = 1;
+--------+-----------+------+------+
| Nombre | Direccion | Edad | X    |
+--------+-----------+------+------+
| Juan   | Laguna    |   25 |   10 |
| Juan   | Laguna    |   25 |   20 |
| Juan   | Laguna    |   25 |   40 |
| Pedro  | Laguna    |   25 |   30 |
+--------+-----------+------+------+
4 rows in set (0.00 sec)


Observa que en la lista NO APARECEN LOS REGISTROS QUE ESTÁN DUPLICADOS, aunque el registro que agregué también tiene un 30 tiene un nombre distinto, por lo tanto no está duplicado. haz la prueba y dinos si es lo que estabas buscando.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar