Predicati ALL, DISTINCT, DISTINCTROW, TOP
Applies ToAccess per Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Specifica record selezionati con query SQL.

Sintassi

SELECT [ALL | DISTINCT | DISTINCTROW | [TOP n [PERCENT]]]FROM tabella

Un'istruzione SELECT contenente questi predicati è composta dalle parti seguenti:

Parte

Descrizione

ALL

Si presuppone questo valore se non sono stati inclusi predicati. Il motore di database di Microsoft Access seleziona tutti i record che soddisfano le condizioni dell'istruzione SQL. I due esempi seguenti sono equivalenti e restituiscono tutti i record dalla tabella Employees:

SELECT ALL *FROM EmployeesORDER BY EmployeeID;
SELECT *FROM EmployeesORDER BY EmployeeID;

DISTINCT

Omette i record che contengono dati duplicati nei campi selezionati. Per essere inclusi nei risultati della query, i valori per ogni campo elencato nell'istruzione SELECT devono essere univoci. Ad esempio, è possibile che alcuni dipendenti elencati in una tabella Employees abbiano lo stesso cognome. Se due record contengono Milano nel campo LastName, l'istruzione SQL seguente restituisce solo un record contenente Milano:

SELECT DISTINCT LastNameFROM Employees;

Se si omette DISTINCT, la query restituisce entrambi i record Milano.

Se la clausola SELECT contiene più di un campo, la combinazione di valori di tutti i campi deve essere univoca per consentire l'inclusione di un record specifico nei risultati.

L'output di una query che usa DISTINCT non è aggiornabile e non riflette le modifiche successive apportate da altri utenti.

DISTINCTROW

Omette dati in base a interi record duplicati, non solo a campi duplicati. Ad esempio, è possibile creare una query che unisce le tabelle Customers e Orders nel campo CustomerID. La tabella Customers non contiene campi CustomerID duplicati, ma la tabella Orders include tali campi, poiché ogni cliente può avere più ordini. L'istruzione SQL seguente illustra come usare DISTINCTROW per produrre un elenco di società con almeno un ordine, ma senza dettagli sugli ordini:

SELECT DISTINCTROW CompanyNameFROM Customers INNER JOIN OrdersON Customers.CustomerID = Orders.CustomerIDORDER BY CompanyName;

Se si omette DISTINCTROW, questa query produce più righe per ogni società che ha più di un ordine.

DISTINCTROW produce un effetto solo se si selezionano campi da alcune, non tutte, le tabelle usate nella query. DISTINCTROW viene ignorata se la query include solo una tabella o se i campi vengono restituiti da tutte le tabelle.

TOP n [PERCENT]

Restituisce un determinato numero di record che rientrano nella parte superiore o inferiore di un intervallo specificato da una clausola ORDER BY. Si supponga di volere ottenere i nomi dei 25 studenti migliori dell'anno scolastico 1994:

SELECT TOP 25FirstName, LastNameFROM StudentsWHERE GraduationYear = 2003ORDER BY GradePointAverage DESC;

Se non si include la clausola ORDER BY, la query restituirà un set arbitrario di 25 record dalla tabella Students che soddisfano la clausola WHERE.

Il predicato TOP non sceglie tra valori uguali. Nell'esempio precedente, se i valori relativi al venticinquesimo e ventiseiesimo voto più alto sono uguali, la query restituirà 26 record.

È anche possibile usare la parola riservata PERCENT per restituire una determinata percentuale di record, che rientrano nella parte superiore o inferiore di un intervallo specificato da una clausola ORDER BY. Si supponga che, invece dei 25 studenti migliori, si voglia ottenere il 10% degli studenti peggiori della classe:

SELECT TOP 10 PERCENTFirstName, LastNameFROM StudentsWHERE GraduationYear = 2003ORDER BY GradePointAverage ASC;

Il predicato ASC specifica la restituzione dei valori inferiori dell'intervallo. Il valore che segue TOP deve essere un numero intero senza segno.

TOP non influisce sull'aggiornabilità o meno della query.

tabella

Nome della tabella di cui vengono recuperati i record.

Serve aiuto?

Vuoi altre opzioni?

Esplorare i vantaggi dell'abbonamento e i corsi di formazione, scoprire come proteggere il dispositivo e molto altro ancora.

Le community aiutano a porre e a rispondere alle domande, a fornire feedback e ad ascoltare gli esperti con approfondite conoscenze.