2012-06-06 8 views
7

En mi tabla, algunos registros tienen todos los valores de columna son los mismos, excepto uno. Necesito escribir una consulta para obtener esos registros. ¿Cuál es la mejor manera de hacerlo? la tabla es así:seleccionar todas las columnas con una columna tiene un valor diferente

colA colB colC 
    a  b c 
    a  b d 
    a  b e 

¿Cuál es la mejor manera de obtener todos los registros con todas las columnas? Gracias por la ayuda de todos.

+0

es uno o más valores diferentes ¿está bien, o debe ser exactamente un valor diferente? – goat

+1

Gracias por agregar un ejemplo de la entrada (la tabla). Todavía no está claro en la salida deseada. ¿Puedes publicar un ejemplo de lo que quieres que sea el resultado? – Oded

+0

¿Es siempre la misma columna la que es diferente? –

Respuesta

8

Suponiendo que usted sabe que column3 siempre será diferente, para obtener las filas que tienen más de un valor:

SELECT Col1, Col2 
FROM Table t 
GROUP BY Col1, Col2 
HAVING COUNT(distinct col3) > 1 

Si necesita todos los valores en las tres columnas, a continuación, puede unirse a este nuevo a la tabla original:

SELECT t.* 
FROM table t join 
    (SELECT Col1, Col2 
     FROM Table t 
     GROUP BY Col1, Col2 
     HAVING COUNT(distinct col3) > 1 
    ) cols 
    on t.col1 = cols.col1 and t.col2 = cols.col2 
+0

gracias, funciona! –

+0

'TENIENDO COUNT (distinto col3)> 1' perfecto! –

1

Simplemente seleccione las filas que tienen los diferentes valores:

SELECT col1, col2 
FROM myTable 
WHERE colWanted != knownValue 

Si esto no es lo que está buscando, por favor, puesto ejemplos de los datos de la tabla y la salida deseada.

+0

Hola Oded, gracias por tu ayuda. De hecho, necesito obtener todas las columnas. La tabla es así: ColA ColB ColC –

1

¿Qué tal algo así como

SELECT Col1, Col2 
FROM Table 
GROUP BY Col1, Col2 
HAVING COUNT(*) = 1 

esto le dará Col1, Col2 que tienen datos únicos.

+0

Gracias por su ayuda, Ocio. Sin embargo, necesito todas las columnas con o sin datos únicos. –

0

col3 Suponiendo tiene las DIFS

SELECT Col1, Col2 
FROM Table 
GROUP BY Col1, Col2 
HAVING COUNT(*) > 1 

OR PARA MOSTRAR TODAS LAS 3 COLIS

SELECT Col1, Col2, Col3 
FROM Table1 
GROUP BY Col1, Col2, Col3 
HAVING COUNT(Col3) > 1 
Cuestiones relacionadas