Prédicats ALL, DISTINCT, DISTINCTROW, TOP

Prédicats ALL, DISTINCT, DISTINCTROW, TOP

Spécifie les enregistrements sélectionnés avec SQL requêtes.

Syntaxe

SELECT [ALL | DISTINCT | DISTINCTROW | [TOP n [POURCENTAGE]]]
Tableau FROM

Une instruction SELECT contenant ces prédicats contient les parties suivantes :

Partie

Description

ALL

Pris en compte si vous n’incluez pas les prédicats. Le moteur de base de données Access sélectionne tous les enregistrements qui répondent aux conditions dans l’SQL données. Les deux exemples suivants sont équivalents et retournent tous les enregistrements de la table Employees (Employés) :

SELECT ALL *
FROM Employees
ORDER BY EmployeeID;
SELECT *
FROM Employees
ORDER BY EmployeeID;

DISTINCT

Omet les enregistrements contenant des données en double dans les champs sélectionnés. Pour être incluses dans les résultats de la requête, les valeurs de chaque champ répertorié dans l’instruction SELECT doivent être uniques. Par exemple, plusieurs employés répertoriés dans une table Employés peuvent avoir le même nom. Si deux enregistrements contiennent Smith dans le champ Nom, l’instruction SQL suivante renvoie un seul enregistrement contenant Smith :

SELECT DISTINCT LastName
FROM Employees;

Si vous omettez DISTINCT, cette requête renvoie les deux enregistrements Smith.

Si la clause SELECT contient plusieurs champs, la combinaison des valeurs de tous les champs doit être unique pour qu’un enregistrement donné soit inclus dans les résultats.

Le résultat d’une requête qui utilise DISTINCT n’est pas actualisable et ne reflète pas les modifications ultérieures apportées par d’autres utilisateurs.

DISTINCTROW

Omet les données sur la base d’enregistrements complets en double, pas seulement de champs en double. Par exemple, vous pouvez créer une requête qui joint les tables Clients et Commandes dans le champ CustomerID. La table Clients ne contient aucun champ CustomerID en double, mais la table Commandes en fait, car chaque client peut avoir plusieurs commandes. L’SQL suivante vous montre comment utiliser DISTINCTROW pour produire une liste de sociétés qui ont au moins une commande, mais sans détails sur ces commandes :

SELECT DISTINCTROW CompanyName
FROM Customers INNER JOIN Orders
ON Customers.CustomerID = Orders.CustomerID
ORDER BY CompanyName;

Si vous omettez DISTINCTROW, cette requête produit plusieurs lignes pour chaque société qui possède plusieurs commandes.

DISTINCTROW n’a d’effet que lorsque vous sélectionnez des champs à partir de certaines tables, mais pas toutes, utilisées dans la requête. DISTINCTROW est ignoré si votre requête n’inclut qu’une seule table, ou si vous extrayez des champs de toutes les tables.

TOP n [POURCENTAGE]

Renvoie un certain nombre d’enregistrements en haut ou en bas d’une plage spécifiée par une clause ORDER BY. Supposons que vous vouliez le nom des 25 meilleurs étudiants de la classe 1994 :

SELECT TOP 25
FirstName, LastName
FROM Students
WHERE GraduationYear = 2003
ORDER BY GradePointAverage DESC;

Si vous n’incluez pas la clause ORDER BY, la requête retourne un ensemble arbitraire de 25 enregistrements de la table Students qui répondent à la clause WHERE.

Le prédicat TOP n’a pas le choix entre des valeurs égales. Dans l’exemple précédent, si les moyennes de point de note les plus élevées des vingt cinquième et vingt-sixième sont identiques, la requête retournera 26 enregistrements.

Vous pouvez également utiliser le mot réservé PERCENT pour renvoyer un certain pourcentage d’enregistrements en haut ou en bas d’une plage spécifiée par une clause ORDER BY. Supposons que, au lieu des 25 meilleurs étudiants, vous vouliez les 10 pour cent inférieurs de la classe :

SELECT TOP 10 PERCENT
FirstName, LastName
FROM Students
WHERE GraduationYear = 2003
ORDER BY GradePointAverage ASC;

Le prédicat ASC spécifie un retour des valeurs inférieures. La valeur qui suit la valeur TOP doit être un integer non signé.

La mise à jour de la requête n’a aucune incidence sur la mise à jour de la requête.

table

Nom de la table d'où sont extraits les enregistrements.



Besoin d’aide ?

Développez vos compétences dans Office
Découvrez des formations
Accédez aux nouvelles fonctionnalités en avant-première
Rejoignez le programme Office Insider

Ces informations vous ont-elles été utiles ?

Nous vous remercions pour vos commentaires.

Merci pour vos commentaires. Il serait vraisemblablement utile pour vous de contacter l’un de nos agents du support Office.

×