SQL distinto para 2 campos en una base de datos

84

¿Puede obtener la combinación distinta de 2 campos diferentes en una tabla de base de datos? si es así, puede proporcionar el ejemplo de SQL.

leora
fuente

Respuestas:

128

¿Qué tal simplemente:

select distinct c1, c2 from t

o

select c1, c2, count(*)
from t
group by c1, c2
Howard Pinsley
fuente
Según los datos, agrupar por es más lento que distinto
noizer
5
Para aquellos que ven el Operand should contain 1 column(s)error, su problema es que probablemente lo esté haciendo select distinct(c1, c2) from ty no se le permiten corchetes aquí. Así es como llegué aquí.
BookOfGreg
16

Si desea valores distintos de solo dos campos, además de devolver 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 diferenciar deben aparecer en el grupo por cláusula. De lo contrario, es como dice Decker.

Jeffrey L. Whitledge
fuente
7

Puede obtener un resultado distinto por dos columnas usando debajo de SQL:

SELECT COUNT(*) FROM (SELECT DISTINCT c1, c2 FROM [TableEntity]) TE
Wilson Wu
fuente
5

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

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

Comparte mi estúpido pensamiento:

Tal vez pueda seleccionar distinto solo en c1 pero no en c2, por lo que la sintaxis puede ser select ([distinct] col)+dónde distinctestá un calificador para cada columna.

Pero después de pensarlo, encuentro que distinguir en una sola columna es una tontería . Tome la siguiente relación:

   | A | B
__________
  1| 1 | 2
  2| 1 | 1

Si nosotros select (distinct A), B, entonces ¿cuál es el adecuado Bpara A = 1?

Por lo tanto, distinctes un calificativo para a statement.

youkaichao
fuente