Określa rekordy zaznaczone za pomocą zapytań SQL.
Składnia
SELECT [ALL | DISTINCT | DISTINCTROW | [TOP n [PROCENT]]]
FROM tabelaInstrukcja SELECT zawierająca te predykaty składa się z następujących części:
Segment |
Opis |
ALL |
Zakłada się, że jeśli nie uwzględnisz jednego z predykatów. Aparat bazy danych programu Microsoft Access wybiera wszystkie rekordy spełniające warunki w instrukcji SQL. Dwa poniższe przykłady są równoważne i zwracają wszystkie rekordy z tabeli Pracownicy:
|
DISTINCT |
Pomija rekordy zawierające zduplikowane dane w wybranych polach. Aby uwzględnić je w wynikach zapytania, wartości dla każdego pola wymienionego w instrukcji SELECT muszą być unikatowe. Na przykład kilku pracowników wymienionych w tabeli Pracownicy może mieć takie samo nazwisko. Jeśli dwa rekordy zawierają ciąg Znaków Kowalski w polu Nazwisko, poniższa instrukcja SQL zwraca tylko jeden rekord zawierający ciąg Kowalski:
Jeśli funkcja DISTINCT zostanie pominięta, to zapytanie zwróci oba rekordy Smitha. Jeśli klauzula SELECT zawiera więcej niż jedno pole, kombinacja wartości ze wszystkich pól musi być unikatowa, aby dany rekord został uwzględniony w wynikach. Dane wyjściowe zapytania używającego funkcji DISTINCT nie są aktualizowane i nie odzwierciedlają kolejnych zmian wprowadzonych przez innych użytkowników. |
DISTINCTROW |
Pomija dane oparte na całych zduplikowanych rekordach, a nie tylko na zduplikowanych polach. Można na przykład utworzyć zapytanie łączące tabele Klienci i Zamówienia w polu IdentyfikatorKlienta. Tabela Klienci nie zawiera zduplikowanych pól CustomerID, ale tabela Zamówienia ma znaczenie, ponieważ każdy klient może mieć wiele zamówień. Poniższa instrukcja SQL pokazuje, jak za pomocą funkcji DISTINCTROW utworzyć listę firm, które mają co najmniej jedno zamówienie, ale bez żadnych szczegółów dotyczących tych zamówień:
Jeśli funkcja DISTINCTROW zostanie pominięta, to zapytanie tworzy wiele wierszy dla każdej firmy, która ma więcej niż jedno zamówienie. Funkcja DISTINCTROW działa tylko wtedy, gdy wybierasz pola z niektórych( ale nie wszystkich) tabel użytych w zapytaniu. Funkcja DISTINCTROW jest ignorowana, jeśli zapytanie zawiera tylko jedną tabelę lub pola wyjściowe ze wszystkich tabel. |
TOP n [PROCENT] |
Zwraca pewną liczbę rekordów znajdujących się u góry lub u dołu zakresu określonego przez klauzulę ORDER BY. Załóżmy, że chcesz mieć imiona i nazwiska 25 najlepszych uczniów z klasy 1994:
Jeśli nie zostanie dołączona klauzula ORDER BY, zapytanie zwróci dowolny zestaw 25 rekordów z tabeli Uczniowie, które spełniają klauzulę WHERE. Predykat TOP nie wybiera równych wartości. W poprzednim przykładzie, jeśli średnia z 25 i 26 punktów najwyższej klasy jest taka sama, zapytanie zwróci 26 rekordów. Możesz również użyć słowa zastrzeżonego PERCENT, aby zwrócić określony procent rekordów znajdujących się u góry lub u dołu zakresu określonego przez klauzulę ORDER BY. Załóżmy, że zamiast 25 najlepszych uczniów chcesz mieć 10% najniższych poziomów zajęć:
Predykat ASC określa zwracane wartości najniższe. Wartość następująca po kolumnie TOP musi być niepodpisaną liczbą całkowitą. Funkcja TOP nie ma wpływu na to, czy zapytanie można aktualizować. |
tabela |
Nazwa tabeli, z której są pobierane rekordy. |