Запросы

Выборка уникальных значений. Оператор DISTINCT

Последнее обновление: 28.11.2021

Оператор 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;
Выборка уникальных значений в SQLite

Но при таком запросе производители повторяются. Теперь применим оператор DISTINCT для выборки уникальных значений:

SELECT DISTINCT company FROM products;
Оператор DISTINCT в SQLite

Также мы можем задавать выборку уникальных значений по нескольким столбцам:

SELECT DISTINCT company, product_count FROM products;

Здесь для выборки используются столбцы company и product_count. Из пяти строк только для двух строк эти столбцы имеют повторяющиеся значения. Поэтому в выборке будет 4 строки:

Оператор DISTINCT и несколько столбцов в SQLite

Стоит отметить, что SQLite рассматривает значения NULL как повторяющиеся. Поэтому если оператор DISTINCT производит уникальную выборку по столбцу, для которого в нескольких строках значится значение NULL, то оператор DISTINCT отберет из них только одну строку.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850