2008-10-10 9 views

Respuesta

94

¿Qué hay de simplemente:

select distinct c1, c2 from t 

o

select c1, c2, count(*) 
from t 
group by c1, c2 
+0

Dependiendo de los datos, group by es más lento que distinto – noizer

+0

Para aquellos que ven 'Operand debe contener 1 columna (s)' error, su problema es que probablemente esté haciendo 'select distinct (c1, c2) from t' y no está permitido corchetes aquí. Así es como llegué aquí. – BookOfGreg

15

Si desea que los valores distintos de sólo dos campos, más la rentabilidad de otros campos con ellos, entonces los otros campos deben tener algún tipo de agregación en ellos (suma, mínimo, máximo, etc.), y las dos columnas que desea distinguir deben aparecer en la cláusula group by. De lo contrario, es exactamente como dice Decker.

3

Si aún desea agrupar solamente por una columna (como quería) se puede anidar la consulta:

select c1, count(*) from (select distinct c1, c2 from t) group by c1 
3

Puede obtener un resultado distinto por dos columnas a usar más adelante SQL:

SELECT COUNT(*) FROM (SELECT DISTINCT c1, c2 FROM [TableEntity]) TE 
Cuestiones relacionadas