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.

Respuestas:


128

¿Qué tal simplemente:

select distinct c1, c2 from t

o

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

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.


7

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

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

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

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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.