Часть 12.10: Исключить повторяющиеся строки из выборки данных: SELECT DISTINCT в SQLite

Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем изучать базы данных и наше знакомство с библиотекой SQLite3. Часто бывает нужно сделать так, чтобы в результирующей таблице запроса SELECT не было дублирующихся и или повторяющихся строк. Для этих целей в языке запросов SQL и базах данных SQLite есть ключевое слово DISTINCT. DISTINCT исключает повторяющиеся/дублирующиеся строки в результате выборки данных. В этой записи мы с вами разберемся с принципами работы ключевого слова DISTINCT в SQL и в SQLite3.  А также посмотрим пример запроса SELECT, в котором не будет дублирующихся строк в результате выборки.

Исключить повторяющиеся строки из выборки данных: SELECT DISTINCT в SQLite

Исключить повторяющиеся строки из выборки данных: SELECT DISTINCT в SQLite

 


Как исключить повторяющиеся строки при выборке данных из базы данных: SELECT DISTINCT в SQLite

Иногда бывает так, что таблицы в базе данных избыточны и строки в них повторяются, чтобы не выводить повторяющиеся строки в результирующей таблице, которую мы получаем в результате SQL запроса SELECT, у нас есть модификатор DISTINCT. Все очень просто, вы пишите SELECT DISTINCT, а библиотека SQLite3 исключает дубликаты строк в результате выборки. Больше нам здесь добавить нечего.

Хотя нам стоит добавить, что команда SELECT имеет два модификатора: ALL и DISTINCT, как вы уже поняли, эти модификаторы необязательные, а SQLite по умолчанию считает, что вы используете значение ALL, когда делаете выборку данных из базы данных.

Пример исключения повторяющихся строк из выборки данных в базе данных: SELECT DISTINCT в SQLite

Давайте реализуем пример использования SELECT DISTINCT в SQLite и исключим повторяющиеся строки из результирующей таблицы в базе данных SQLite3. Для начала создадим таблицу в базе данных, воспользовавшись командой CREATE:

Довольно-таки простая таблица, но мы обеспечили целостность данных за счет использования ограничения уровня таблицы и ограничений уровня столбца. Помимо того, что ограничение первичного ключа PRIMARY KEY является ограничение уровня таблицы, это еще и индекс таблицы, который совпадает с внутренним индексом ROWID (это столбец, который SQLite генерирует автоматически). А теперь добавим строки в таблицу, для этого есть команда INSERT INTO:

Давайте сделаем выборку данных из базы данных и исключим повторяющиеся значения при помощи модификатора команды SELECT – DISTINCT:

Теперь мы видим разницу между SELECT DISTINCT и обычным SELECT, в первом случае у нас не повторяется строка «Михайлова Любовь». Как видите, ничего сложно в том, чтобы исключить дубли значений из выборки данных, нет: просто используйте ключевую фразу SELECT DISTINCT.

Текст комментария: