No estoy seguro de por qué la respuesta aceptada ha sido aceptada y desde luego no entiendo por qué ha sido votado pero el OP tiene lo siguiente en la pregunta:
Escribí esto, pero no es lo que quiero.
select DISTINCT carBrand, carYear, carModel from Cars;
La respuesta aceptada ha sugerido el uso de:
SELECT carBrand , carYear ,carModel
FROM Cars
GROUP BY carBrand , carYear ,carModel;
que devuelve exactamente el mismo resultado que la consulta del OP. En realidad, la sugerencia en la respuesta (grupo de uso por) ni siquiera se anima a ser utilizada para obtener resultados distintos, sino que se debe usar para la agregación. Ver this respuesta para más información.
Además, SQL Server es lo suficientemente inteligente como para entender que si no hay una función de agregación en la consulta, entonces la consulta realmente está pidiendo distinct
por lo que usará distinct
debajo del capó.
Distinct hará una distinción en toda la fila como @MarkByers ha indicado en su respuesta.
Para aquellos que quieran probar lo anterior, aquí hay un script que creará una tabla con 3 columnas y luego la rellenará con datos. Ambos (distinct
y group by
) devolverán el mismo resultado.
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');
Ambas consultas volverán este resultado:
carBrand carYear carModel
BMW 2000 328 i
BMW 2000 3M
Conclusión
NO use group by
si quieres registros distintos. Use distinct
. Use group by
cuando usa la función de agregado como SUM
, COUNT
, etc.
nombre del coche es en qué campo? – Randy
En mi SqlServer, "seleccione DISTINCT carBrand, carYear, carModel from Cars;" Funciona perfectamente – Gamby