/ / Utilisation de Distinct avec Top dans une clause de requête choisie - sql, sql-server, tsql

Utilisation de Distinct avec Top dans une clause de requête choisie - sql, sql-server, tsql

Dans SQL Server, je peux créer une requête qui utilise à la fois Top et Distinct dans la clause Select, telle que celle-ci:

Select Distinct Top 10 program_name
From sampleTable

La base de données renverra-t-elle les valeurs distinctes des 10 premiers résultats ou les 10 premiers résultats des valeurs distinctes? Ce comportement est-il cohérent dans SQL ou dépend-il de la base de données?

Réponses:

4 pour la réponse № 1

TOP est exécuté en dernier, donc votre DISTINCT passe d'abord puis le TOP

http://blog.sqlauthority.com/2009/04/06/sql-server-logical-query-processing-phases-order-of-statement-execution/


0 pour la réponse № 2

Utilisation

Select Top 10 program_name
From sampleTable group by program_name;

Il te rendra le top 10 nom_programme distinct.

Votre requête renverra également le 10 nom_programme distinct.


0 pour la réponse № 3

Essaye ça:

select distinct top 10 c from
(
select 1 c union all
select 1   union all
select 1   union all
select 1   union all
select 1   union all
select 1   union all
select 1   union all
select 1   union all
select 1   union all
select 1   union all
select 2
) as T
order by c

Comparez ce résultat à ces requêtes:

select distinct c from (
select top 10 c from
(
select 1 c union all
select 1   union all
select 1   union all
select 1   union all
select 1   union all
select 1   union all
select 1   union all
select 1   union all
select 1   union all
select 1   union all
select 2
) as T
order by c
) as T2

select top 10 c from (
select distinct c from
(
select 1 c union all
select 1   union all
select 1   union all
select 1   union all
select 1   union all
select 1   union all
select 1   union all
select 1   union all
select 1   union all
select 1   union all
select 2
) as T
) as T2
order by c