SQL distinto per 2 campi in un database


84

Riesci a ottenere la combinazione distinta di 2 diversi campi in una tabella di database? in tal caso, puoi fornire l'esempio SQL.

Risposte:


129

Che ne dici semplicemente:

select distinct c1, c2 from t

o

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

A seconda dei dati, il gruppo per è più lento di quello distinto
noizer

5
Per coloro che vedono Operand should contain 1 column(s)errori, il tuo problema è che probabilmente stai facendo select distinct(c1, c2) from te non ti sono consentite le parentesi qui. È così che sono arrivato qui.
BookOfGreg

16

Se desideri valori distinti da solo due campi, oltre a restituire altri campi con essi, gli altri campi devono avere un qualche tipo di aggregazione (somma, minimo, massimo, ecc.) E le due colonne che desideri distinte devono apparire in la clausola group by. Altrimenti, è proprio come dice Decker.


7

È possibile ottenere risultati distinti da due colonne utilizzate sotto SQL:

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

5

Se vuoi comunque raggruppare solo per una colonna (come volevo) puoi nidificare la query:

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

3

Condividi il mio stupido pensiero:

Forse posso selezionare distinto solo su c1 ma non su c2, quindi la sintassi potrebbe essere select ([distinct] col)+dove distinctè un qualificatore per ogni colonna.

Ma dopo aver riflettuto, trovo che distinto su una sola colonna non abbia senso . Prendi la seguente relazione:

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

Se noi select (distinct A), B, allora qual è il giusto Bper A = 1?

Quindi, distinctè un qualificatore per a statement.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.