Резюме :в този урок ще научите как да използвате SQLite SELECT DISTINCT
клауза за премахване на дублиращи се редове в набора от резултати.
Въведение в SQLite SELECT DISTINCT
клауза
DISTINCT
клаузата е незадължителна клауза на SELECT
изявление. DISTINCT
клаузата ви позволява да премахнете дублиращите се редове в набора от резултати.
Следното изявление илюстрира синтаксиса на DISTINCT
клауза:
SELECT DISTINCT select_list
FROM table;
Code language: SQL (Structured Query Language) (sql)
В този синтаксис:
- Първо,
DISTINCT
Клаузата трябва да се появи веднага следSELECT
ключова дума. - Второ, поставяте колона или списък с колони след
DISTINCT
ключова дума. Ако използвате една колона, SQLite използва стойности в тази колона, за да оцени дубликата. В случай, че използвате няколко колони, SQLite използва комбинацията от стойности в тези колони, за да оцени дубликата.
SQLite разглежда NULL
стойности като дубликати. Ако използвате DISTINCT
клауза с колона, която има NULL
стойности, SQLite ще запази един ред от NULL
стойност.
В теорията на базата данни, ако колона съдържа NULL
стойности, това означава, че нямаме информация за тази колона от конкретни записи или информацията не е приложима.
Например, ако клиент има телефонен номер с NULL
стойност, това означава, че нямаме информация за телефонния номер на клиента към момента на записване на информацията за клиента или клиентът може изобщо да няма телефонен номер.
SQLite SELECT DISTINCT
примери
Ще използваме customers
таблица в примерната база данни за демонстрация.
Да предположим, че искате да знаете градовете, където се намират клиентите, можете да използвате SELECT
изявление за получаване на данни от city
колона на customers
таблица, както следва:
SELECT city
FROM customers
ORDER BY city;
Code language: SQL (Structured Query Language) (sql)
Опитайте го
Връща 59 реда. Има няколко дублиращи се реда, като Berlin
London
и Mountain View
За да премахнете тези дублиращи се редове, използвате DISTINCT
клауза, както следва:
SELECT DISTINCT city
FROM customers
ORDER BY city;
Code language: SQL (Structured Query Language) (sql)
Опитайте го
Връща 53 реда, защото DISTINCT
клаузата премахна 6 дублиращи се реда.
SQLite SELECT DISTINCT
върху множество колони
Следното изявление намира градове и държави на всички клиенти.
SELECT
city,
country
FROM
customers
ORDER BY
country;
Code language: SQL (Structured Query Language) (sql)
Опитайте го
Наборът от резултати съдържа дублирани град и държава, например Сао Пауло в Бразилия, както е показано на екранната снимка по-горе.
За да премахнете дублирания град и държава, прилагате DISTINCT
клауза към колоните за град и държава, както е показано в следната заявка:
SELECT DISTINCT
city,
country
FROM
customers
ORDER BY
country;
Code language: SQL (Structured Query Language) (sql)
Ето частичния изход:
Както споменахме по-рано, SQLite използва комбинацията от град и държава, за да оцени дубликата.
SQLite SELECT DISTINCT
с NULL
пример
Това изявление връща имената на компании на клиенти от customers
таблица.
SELECT company
FROM customers;
Code language: SQL (Structured Query Language) (sql)
Опитайте го
Връща 59 реда с много NULL
стойности.
Сега, ако приложите DISTINCT
клауза към израза, той ще запази само един ред с NULL
стойност.
Вижте следното изявление:
SELECT DISTINCT company
FROM customers;
Code language: SQL (Structured Query Language) (sql)
Опитайте го
Инструкцията връща 11 реда с един NULL
стойност.
Имайте предвид, че ако изберете списък с колони от таблица и искате да получите уникална комбинация от някои колони, можете да използвате GROUP BY
клауза.
В този урок научихте как да премахнете дублиращи се редове от набор от резултати с помощта на SQLite SELECT DISTINCT
клауза.