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 № 1TOP
est exécuté en dernier, donc votre DISTINCT
passe d'abord puis le TOP
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