Оператор DISTINCT позволяет выбрать уникальные данные по определенным столбцам.
К примеру, разные товары могут иметь одних и тех же производителей, и, допустим, у нас следующая таблица товаров:
DROP TABLE IF EXISTS products; CREATE TABLE products ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, company TEXT NOT NULL, product_count INTEGER DEFAULT 0, price INTEGER ); INSERT INTO products (name, company, product_count, price) VALUES ('iPhone 13', 'Apple', 3, 76000), ('iPhone 12', 'Apple', 3, 51000), ('Galaxy S21', 'Samsung', 2, 56000), ('Galaxy S20', 'Samsung', 1, 41000), ('P40 Pro', 'Huawei', 5, 36000);
Выберем всех производителей:
SELECT company FROM products;
Но при таком запросе производители повторяются. Теперь применим оператор DISTINCT для выборки уникальных значений:
SELECT DISTINCT company FROM products;
Также мы можем задавать выборку уникальных значений по нескольким столбцам:
SELECT DISTINCT company, product_count FROM products;
Здесь для выборки используются столбцы company и product_count. Из пяти строк только для двух строк эти столбцы имеют повторяющиеся значения. Поэтому в выборке будет 4 строки:
Стоит отметить, что SQLite рассматривает значения NULL как повторяющиеся. Поэтому если оператор DISTINCT производит уникальную выборку по столбцу, для которого в нескольких строках значится значение NULL, то оператор DISTINCT отберет из них только одну строку.