Predikāti ALL, DISTINCT, DISTINCTROW, TOP
Applies ToAccess pakalpojumam Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Norāda ar SQL vaicājumiem atlasītos ierakstus.

Sintakse

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

Priekšrakstam SELECT ar šiem predikātiem ir šādas daļas:

Daļa

Apraksts

ALL

Tiek pieņemts, ka, ja nav iekļauts kāds no predikātiem. Microsoft Access datu bāzes programma atlasa visus ierakstus, kas atbilst SQL priekšraksta nosacījumiem. Šie divi piemēri ir ekvivalenti un atgriež visus ierakstus no tabulas Employees (Darbinieki):

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

DISTINCT

Izlaiž ierakstus, kas satur datu dublikātus atlasītajiem laukiem. Lai tiktu iekļautas vaicājuma rezultātos, katra priekšraksta SELECT lauka vērtībām jābūt unikālām. Piemēram, vairākiem darbiniekiem tabulā ir vienādi uzvārdi. Ja divos ierakstos laukā LastName ir iekļauts Bērziņš, šis SQL priekšraksts atgriež tikai vienu ierakstu, kas satur Bērziņš:

SELECT DISTINCT LastNameFROM Employees;

Ja tiek izlaists DISTINCT, šis vaicājums atgriež abus Smith ierakstus.

Ja klauzulā SELECT ir vairāki lauki, vērtību kombinācijai no visiem laukiem ir jābūt unikālai, lai kāds ieraksts tiktu iekļauts rezultātos.

Vaicājuma, kas izmanto DISTINCT, izvadi nav atjaunināma un neatspoguļo turpmākās citu lietotāju veiktās izmaiņas.

DISTINCTROW

Izlaiž datus, pamatojoties uz veseliem ierakstu dublikātiem, nevis tikai lauku dublikātiem. Piemēram, varat izveidot vaicājumu, kas laukā CustomerID savieno tabulas Customers un Orders. Tabulā Klienti nav lauku CustomerID dublikāti, taču tabulai Pasūtījumi ir daudzi pasūtījumi, jo katram klientam var būt vairāki pasūtījumi. Tālāk redzamais SQL priekšraksts parāda, kā var izmantot DISTINCTROW, lai izveidotu sarakstu ar uzņēmumiem, kuriem ir vismaz viens pasūtījums, bet nav detalizētas informācijas par šiem pasūtījumiem:

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

Ja tiek izlaists DISTINCTROW, šis vaicājums izveido vairākas rindas katram uzņēmumam, kuram ir vairāki pasūtījumi.

DISTINCTROW efekts ir spēkā tikai tad, ja atlasāt laukus no dažām, bet ne visām vaicājumā izmantotajām tabulām. DISTINCTROW tiek ignorēta, ja vaicājumā ir ietverta tikai viena tabula, vai arī izvades lauki no visām tabulām.

TOP n [PERCENT]

Atgriež noteiktu skaitu ierakstu, kas atrodas klauzulas ORDER BY norādītā diapazona augšā vai apakšā. Pieņemsim, ka vēlaties no 1994. gada klases topajiem 25 skolēniem nosaukumos:

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

Ja neietverat klauzulu ORDER BY, vaicājums atgriezīs patvaļīgu 25 ierakstu kopu no tabulas Skolēni, kas apmierina klauzulu WHERE.

Predikāts TOP ne izvēlas vienu no vienādām vērtībām. Iepriekšējā piemērā, ja divdesmit piektā un divdesmit sestā atzīmes atzīme ir vienāda, vaicājums atgriezīs 26 ierakstus.

Rezervēto vārdu PERCENT var izmantot arī, lai atgrieztu noteiktu procentuālo vērtību no ierakstiem, kas atrodas klauzulas ORDER BY norādītā diapazona augšā vai apakšā. Pieņemsim, ka vēlaties, lai mazākie 25 skolēni no nodarbības būtu mazākie 10 procenti:

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

Predikāts ASC norāda apakšējo vērtību atgriešanu. Vērtībai, kas ir aiz TOP, jābūt neparakstītam veselam skaitlim.

Top neietekmē to, vai vaicājums ir atjaunināms.

tabula

Tās tabulas nosaukums, no kuras tiek izgūti ieraksti.

Nepieciešama papildu palīdzība?

Vēlaties vairāk opciju?

Izpētiet abonementa priekšrocības, pārlūkojiet apmācības kursus, uzziniet, kā aizsargāt ierīci un veikt citas darbības.

Kopienas palīdz uzdot jautājumus un atbildēt uz tiem, sniegt atsauksmes, kā arī saņemt informāciju no ekspertiem ar bagātīgām zināšanām.