Predicatele ALL, DISTINCT, DISTINCTROW, TOP

Se aplică la
Access pentru Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Utilizați aceste predicate pentru a specifica ce înregistrări selectează o interogare SQL.

Sintaxă

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

O SELECT instrucțiune care conține aceste predicate are următoarele părți:

Parte Descriere
ALL Access presupune ALL că nu includeți alt predicat. Motorul de baze de date Access selectează toate înregistrările care îndeplinesc condițiile din instrucțiunea SQL. Aceste exemple sunt echivalente și returnează toate înregistrările din Employees tabel: SELECT ALL * FROM Employees ORDER BY EmployeeID; și SELECT * FROM Employees ORDER BY EmployeeID;
DISTINCT Omite înregistrările care conțin date dublate în câmpurile selectate. Pentru a include o înregistrare în rezultate, valorile pentru fiecare câmp din SELECT instrucțiune trebuie să fie unice. De exemplu, mai mulți angajați dintr-un Employees tabel pot avea același nume de familie. Dacă două înregistrări conțin Smith câmp, LastNameSELECT DISTINCT LastName FROM Employees; returnează o singură înregistrare care conține Smith. Dacă omiteți DISTINCT, interogarea returnează ambele Smith înregistrări. Dacă SELECT clauza conține mai multe câmpuri, combinația de valori din toate câmpurile trebuie să fie unică pentru ca o înregistrare să apară în rezultate. Rezultatul unei interogări care utilizează DISTINCT nu este actualizabil și nu reflectă modificările efectuate ulterior de alți utilizatori.
DISTINCTROW Omite date pe baza unor înregistrări dublate întregi, nu doar a câmpurilor dublate. De exemplu, puteți crea o interogare care asociază tabelele Customers și Orders din CustomerID câmp. Tabelul Customers nu are câmpuri dublate, dar tabelul Orders are câmpuri CustomerID dublate, deoarece fiecare client poate avea mai multe comenzi. SELECT DISTINCTROW CompanyName FROM Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID ORDER BY CompanyName; Generează o listă de companii care au cel puțin o comandă, dar nu include detalii despre comenzile respective. Dacă omiteți DISTINCTROW, interogarea generează mai multe rânduri pentru fiecare firmă care are mai mult de o comandă. DISTINCTROW are efect doar atunci când selectați câmpuri din unele tabele utilizate în interogare, dar nu din toate. Access ignoră dacă interogarea DISTINCTROW include un singur tabel sau dacă generați câmpuri din toate tabelele.
TOP n [PERCENT] Returnează un anumit număr de înregistrări care se află în partea de sus sau de jos a unei zone specificate de o ORDER BY clauză. Să presupunem că doriți numele celor mai buni 25 de studenți din promoția 2003: SELECT TOP 25 FirstName, LastName FROM Students WHERE GraduationYear = 2003 ORDER BY GradePointAverage DESC; Dacă nu includeți ORDER BY clauza, interogarea returnează un set arbitrar de 25 de înregistrări din Students tabel care satisfac WHERE clauza. Predicatul TOP nu alege între valori egale. În exemplul precedent, dacă cele mai mari medii ale notelor douăzeci și cinci și douăzeci și șasea sunt aceleași, interogarea returnează 26 de înregistrări. De asemenea, puteți utiliza cuvântul rezervat pentru a returna un procent din înregistrările PERCENT care se află în partea de sus sau de jos a unei zone specificate de o ORDER BY clauză. De exemplu, dacă doriți ultimii 10 procente din clasă, utilizați SELECT TOP 10 PERCENT FirstName, LastName FROM Students WHERE GraduationYear = 2003 ORDER BY GradePointAverage ASC; Predicatul ASC returnează ultimele valori. Valoarea care urmează TOP trebuie să fie un număr întreg fără semn. TOP Nu afectează actualizarea interogării.
table Numele tabelului din care Access preia înregistrările.