С помощью параметра WHERE определяется критерий отбора записей из входного набора. Но в таблице могут присутствовать дубликаты (например, в таблицу клиентов ошибочно может быть дважды занесена запись об одном и том же клиенте). По умолчанию в выходном наборе, генерируемом при выполнении SQL-запроса, присутствуют все дубликаты. Управлять включением дубликатов в выходной набор можно с помощью специальных параметров — предикатов. По умолчанию команде SELECT соответствует предикат ALL (его можно явно не указывать), который задает включение в выходной набор всех дубликатов, отобранных по критерию WHERE. В команде SELECT предикат ALL следует за ключевым словом SELECT (перед именами отбираемых полей).
Пример:
SELECT ALL * FROM Клиенты;
Выполняя такой запрос, Access 97 выберет из таблицы клиентов все записи со всеми полями. Если в таблице есть одинаковые записи, они будут присутствовать в выходном наборе в том же количестве, что и в обрабатываемой таблице. Для борьбы с дубликатами применяются предикаты DISTINCT и DISTINCTROW.
Предикат DISTINCT
Пример:
SELECT DISTINCT Клиенты.Фирма
FROM Клиенты,[Потенциальные покупатели]
WHERE Клиенты.Фирма = [Потенциальные покупатели].Фирма
Если, выполняя этот SQL-запрос, Access 97 найдет название одной фирмы в нескольких записях, то в выходной набор это название будет включено только один раз.
Предикат DISTINCT следует применять в тех случаях, когда необходимо исключить записи, которые содержат повторяющиеся данные в выбранных полях. При использовании этого предиката значения указанных в инструкции SELECT полей должны быть уникальными, чтобы содержащая их запись вошла в выходной набор.
Примечание:
Результат запроса, в котором применен предикат DISTINCT, нельзя актуализировать. Действие команды с этим предикатом то же, что и в случае установки значения Да для опции Уникальные значения в диалоговом окне Свойства запроса.