Резюме :в този урок ще научите как да използвате 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 клауза.