Отбор отдельных значений
По мере того как вы станете создавать все более сложные запросы, может возникнуть потребность избавиться от дублирующихся значений. В стандарте SQL:2003 предложен простой и изящный способ устранения дублирующихся значений в результирующем наборе данных. Таблица PAYMENT_TERMS базы данных ACME содержит информацию о скидках, предоставляемых заказчикам. Несмотря на то что потенциально все скидки могут отличаться друг от друга, чаще всего они имеют несколько фиксированных значений. В следующем примере отбираются все строки столбца PAYTERMS_DISCPCT_N из этой таблицы. В этом наборе данных присутствует всего несколько различных значений. Если нужно составить список скидок, используемых для заказчиков в компании, можно выполнить тот же запрос, но уже с ключевым словом DISTINCT. На этот раз все дублирующиеся значения были исключены из результатов запроса. Важно понимать, что ключевое слово DISTINCT относится ко всей строке, а не только к одному столбцу. Если это ключевое слово вставлено перед списком столбцов, различия ищутся в совокупности всех столбцов. Вот пример этой инструкции в синтаксисе Microsoft SQL Server 2008.
Добавив столбец PAYTERMS_CODE_S в список столбцов, мы указали на необходимость различий в Парах столбцов. Исходя из этого, дублирование значений в каждом из столбцов становится возможным, что и можно наблюдать в результатах запроса. Столбцы — это не единственный элемент в мире реляционных баз данных, значения которого можно помещать в результирующий набор данных запроса, и в инструкцию SELECT не всегда включают таблицы. Отбор значений из столбцов таблицы — очень простая концепция, гораздо проще, чем отбор литералов и результатов выражений.