Oracle SQL. 100 шагов от новичка до профессионала. 20 дней новых знаний и практики. Максим Михайлович Чалышев
Чтение книги онлайн.
Читать онлайн книгу Oracle SQL. 100 шагов от новичка до профессионала. 20 дней новых знаний и практики - Максим Михайлович Чалышев страница 24
В определенных запросах SQL как неприятный побочный результат выводится множество одинаковых, повторяющихся записей. Иногда нам необходимо уйти от данных повторений, убрать дубли из результатов запроса.
Теория и практика
В SQL существует специальная команда DISTINCT, которая предназначена для выбора в запросе только уникальных значений, уникальных строк, то есть исключает из вывода повторения и дублирования строк.
Синтаксис
Примеры
Вывести из таблицы AUTO марки автомобилей (MARK), исключить повторения – дубли.
Запрос без DISTINCT:
Рисунок 37. Запрос: дубли марок
Есть дублирующиеся марки авто AUDI, LADA в результате вывода.
Используем DISTINCT:
SELECT DISTINCT MARK FROM AUTO
Дубли строк не выводятся.
Рисунок 38. Запрос: марки авто
Вывести из таблицы AUTO марки и цвета автомобилей (MARK, COLOR), исключить повторения.
Рисунок 39. Запрос: марки авто и цвета
Несколько синих AUDI, используем DISTINCT.
Рисунок 40. Запрос: марки, цвета авто, только уникальные записи
Важные замечания
Важно отметить, что дубли исключаются DISTINCT только из колонок, перечисленных в SELECT; других колонок DISTINCT не касается.
С помощью DISTINCT очень удобно просмотреть, какие вообще значения есть в заданной колонке, например автомобили каких цветов присутствуют в таблице AUTO:
SELECT DISTINCT COLOR FROM AUTO
Вопросы учеников
Есть ли еще какой-либо способ исключить дубли из запроса?
Да, подобный способ называется группировка записей, и мы изучим его позже.
Можно ли использовать DISTINCT с ROWNUM?
Да, но тогда оператор DISTINCT бесполезен, его использование потеряет смысл.
Можно ли использовать DISTINCT с WHERE?
Конечно, это возможно, нет никаких ограничений, и вот пример такого запроса.
Выведите из таблицы AUTO автомобили марки LADA уникальных цветов.
Контрольные вопросы и задания для самостоятельного выполнения
1. Повторите материалы данного шага.
2. Выведите из таблицы AUTO цвета автомобилей, исключите повторения, напишите SQL-запрос.
3. Выведите из таблицы MAN имена людей, исключите повторения, напишите SQL-запрос.
День пятый
Шаг 21. Математика в запросах
Введение
Мы уже использовали математику в SQL-командах ранее: вспомните, в одном из примеров