Predikāti ALL, DISTINCT, DISTINCTROW, TOP

Predikāti ALL, DISTINCT, DISTINCTROW, TOP

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

Sintakse

ATLASIET [VISI | DISTINCT | DISTINCTROW | [AUGŠĒJais n [procenti]]]
NO tabulas

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

Daļa

Apraksts

ALL

Pieņemts, ja neiekļaujat vienu no predikātiem. Microsoft Access datu bāzes programma atlasa visus ierakstus, kas atbilst SQL priekšraksta nosacījumiem. Tālāk norādītie divi piemēri ir līdzvērtīgi un atgriezīs visus ierakstus no tabulas Employees:

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

DISTINCT

Izlaiž ierakstus, kuros ir datu dublikāti atlasītajā laukā. Lai iekļautu vaicājuma rezultātos, vērtībām katram laukam, kas norādīts priekšrakstā SELECT, ir jābūt unikālam. Piemēram, vairākiem darbiniekiem, kas ir uzskaitīti darbinieku tabulā, var būt vienāds uzvārds. Ja laukā LastName ir divi ieraksti ar Smith, šis SQL priekšraksts atgriež tikai vienu ierakstu, kurā ir Smits:

SELECT DISTINCT LastName
FROM Employees;

Ja izlaižat DISTINCT, šis vaicājums atgriež gan Smita ierakstus.

Ja klauzulā SELECT ir vairāk nekā viens lauks, vērtību kombinācijai no visiem laukiem ir jābūt unikālam konkrētam ierakstam, lai tas tiktu iekļauts rezultātos.

Vaicājuma izvade, kas izmanto DISTINCT, nav atjaunināma un neatspoguļo turpmākās izmaiņas, kuras veic citi lietotāji.

DISTINCTROW

Izlaiž datus, ņemot vērā visu ierakstu dublikātus, ne tikai dublētos laukus. Piemēram, var izveidot vaicājumu, kas laukā CustomerID savieno tabulu Customers un Orders. Tabulā Klienti nav dublētu CustomerID lauku, taču pasūtījumu tabulā ir, jo katram klientam var būt vairāki pasūtījumi. Šajā SQL priekšrakstā ir parādīts, kā varat izmantot DISTINCTROW, lai izveidotu sarakstu ar uzņēmumiem, kuriem ir vismaz viens pasūtījums, taču bez detalizētas informācijas par šiem pasūtījumiem:

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

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

DISTINCTROW ir nozīme tikai tad, ja atlasāt laukus no dažām, bet ne visām tabulām, kas izmantotas vaicājumā. DISTINCTROW tiek ignorēts, ja vaicājumā ir tikai viena tabula vai lauki tiek izvadīti no visām tabulām.

AUGŠĒJais n [procenti]

Atgriež noteiktu ierakstu skaitu, kas atrodas diapazona augšdaļā vai lejasdaļā, ko norāda klauzula ORDER BY. Pieņemsim, ka vēlaties iegūt pirmos 25 skolēnu vārdus no 1994 klases:

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

Ja neiekļaujat klauzulu ORDER BY, vaicājums no tabulas skolēniem atgriezīs patvaļīgu 25 ierakstu kopu, kas apmierina klauzulu WHERE.

Predikāts TOP nav izvēlējies starp vienādām vērtībām. Iepriekšējā piemērā, ja divdesmit piektais un divdesmit sestais vidējās kategorijas vidējais rādītājs ir vienāds, vaicājums atgriezīs 26 ierakstus.

Varat arī izmantot rezervēto vārdu procenti, lai atgrieztu noteiktu procentuālo ierakstu skaitu, kas atrodas diapazona augšdaļā vai lejasdaļā, kas norādīta ar klauzulu ORDER BY. Iedomājieties, ka no 25 labākajiem skolēniem jūs vēlaties, lai būtu pēdējie 10 procenti no klases:

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

Predikāts ASC norāda apakšējo vērtību atgriešanu. Tālāk norādītajai vērtībai ir 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.



Vai nepieciešama papildu palīdzība?

Paplašiniet savas Office prasmes
Iepazīties ar apmācību
Esiet pirmais, kas saņem jaunās iespējas
Pievienoties Office Insider programmai

Vai šī informācija bija noderīga?

Paldies par jūsu atsauksmēm!

Paldies par atsauksmēm! Šķiet, ka jums varētu būt noderīgi sazināties ar kādu no mūsu Office atbalsta speciālistiem.

×