Predikáty ALL, DISTINCT, DISTINCTROW, TOP

Pomocí těchto predikátů můžete určit, které záznamy dotaz SQL vybere.

Syntaxe

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

Příkaz SELECT , který obsahuje tyto predikáty, má následující části:

Část Popis
ALL Access předpokládá ALL , že neobsahuje jiný predikát. Databázový stroj Access vybere všechny záznamy, které splňují podmínky v příkazu SQL. Tyto příklady jsou ekvivalentní a vrátí všechny záznamy z Employees tabulky: SELECT ALL * FROM Employees ORDER BY EmployeeID; a SELECT * FROM Employees ORDER BY EmployeeID;
DISTINCT Vynechá záznamy ve vybraných polích, které obsahují duplicitní data. Pokud chcete do výsledků zahrnout záznam, musí být hodnoty pro každé pole v SELECT příkazu jedinečné. Například několik zaměstnanců v Employees tabulce může mít stejné příjmení. Pokud pole obsahuje Smith dva záznamy LastName , vrátí pouze jeden záznam, SELECT DISTINCT LastName FROM Employees; který obsahuje Smith. Pokud tento argument vynecháte DISTINCT, vrátí dotaz oba Smith záznamy. Pokud klauzule SELECT obsahuje více než jedno pole, musí být kombinace hodnot ze všech polí jedinečná, aby se záznam zobrazil ve výsledcích. Výstup použitého dotazu DISTINCT není aktualizovatelný a neodráží pozdější změny provedené jinými uživateli.
DISTINCTROW Vynechá data na základě celých duplicitních záznamů, nikoli pouhých duplicitních polí. Můžete třeba vytvořit dotaz, který propojí CustomersCustomerID tabulky a Orders v poli. V Customers tabulce nejsou žádná duplicitní CustomerID pole, ale Orders tabulka ano, protože každý zákazník může mít mnoho objednávek. SELECT DISTINCTROW CompanyName FROM Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID ORDER BY CompanyName; Vytvoří seznam společností, které mají alespoň jednu objednávku, ale neobsahuje podrobnosti o těchto objednávkách. Pokud tento argument vynecháte DISTINCTROW, vytvoří dotaz více řádků pro každou společnost, která má více než jednu objednávku. DISTINCTROW Má účinek pouze v případě, že vyberete pole z některých, ale ne ze všech tabulek použitých v dotazu. Access ignoruje DISTINCTROW , pokud dotaz obsahuje pouze jednu tabulku nebo pokud výstupujete pole ze všech tabulek.
TOP n [PERCENT] Vrátí určitý počet záznamů na začátku nebo na konci určené oblasti ORDER BY . Dejme tomu, že chcete zjistit jména 25 nejlepších studentů z ročníku 2003: SELECT TOP 25 FirstName, LastName FROM Students WHERE GraduationYear = 2003 ORDER BY GradePointAverage DESC; Pokud klauzuli ORDER BY nezahrnete, dotaz vrátí z Students tabulky libovolnou sadu 25 záznamů, které vyhovují této WHERE klauzuli. Predikát TOP nevybírá mezi stejnými hodnotami. Pokud jsou nejvyšší průměry známek u dvacátého pátého a dvacátého šestého nejvyššího počtu známek v předchozím příkladu stejné, vrátí dotaz 26 záznamů. Rezervované slovo můžete použít také PERCENT k vrácení procenta záznamů na začátku nebo na konci oblasti určené klauzulí ORDER BY . Pokud například chcete získat posledních 10 procent třídy, použijte SELECT TOP 10 PERCENT FirstName, LastName FROM Students WHERE GraduationYear = 2003 ORDER BY GradePointAverage ASC;ASC predikát vracející nejnižší hodnoty. Následující hodnota TOP musí být celé číslo bez znaménka. TOP nemá vliv na to, jestli je dotaz aktualizovatelný.
table Název tabulky, ze které Access načítá záznamy.