io non sono sicuro perché la risposta accettata è stata accettata e certamente non capisco perché è stato upvoted ma l'OP ha il seguente nella domanda:
Ho scritto questo, ma non è quello che voglio.
select DISTINCT carBrand, carYear, carModel from Cars;
La risposta accettata ha suggerito di utilizzare:
SELECT carBrand , carYear ,carModel
FROM Cars
GROUP BY carBrand , carYear ,carModel;
che restituisce lo stesso risultato esatto di query del PO. In realtà il suggerimento nella risposta (usa gruppo per) non è nemmeno incoraggiato per essere usato per ottenere risultati distinti, ma dovrebbe essere usato per l'aggregazione. Vedere la risposta this per maggiori informazioni.
Inoltre, SQL Server è abbastanza intelligente per capire che se non v'è alcuna funzione di aggregazione nella query, quindi la query è in realtà chiedendo distinct
quindi userà distinct
sotto il cofano.
Distinto farà un distinto sull'intera riga come @MarkByers ha indicato nella sua risposta.
Per coloro che desiderano testare quanto sopra, ecco uno script che creerà una tabella con 3 colonne e quindi la riempirà di dati. Entrambi (distinct
e group by
) restituiranno lo stesso set di risultati.
CREATE TABLE [dbo].[Cars](
[carBrand] [varchar](50) NULL,
[carYear] [int] NULL,
[carModel] [varchar](50) NULL
)
go;
insert into Cars values('BMW', 2000, '328 i');
insert into Cars values('BMW', 2000, '328 i');
insert into Cars values('BMW', 2000, '328 i');
insert into Cars values('BMW', 2000, '3M');
entrambe le query restituiranno questo risultato:
carBrand carYear carModel
BMW 2000 328 i
BMW 2000 3M
Conclusione
NON usare group by
se si desidera record distinti. Utilizzare distinct
. Utilizzare group by
quando si utilizza la funzione di aggregazione come SUM
, COUNT
ecc.
nome auto è in quale campo? – Randy
Nel mio SqlServer, "seleziona DISTINCT carBrand, carYear, carModel da Cars;" funziona perfettamente – Gamby