Проблем:
Искате да премахнете всички дублиращи се редове от набора от резултати на заявка, така че всеки ред да се показва само веднъж.
Пример:
Нашата база данни има таблица с име clothes
с данни в следните колони:id
, name
, color
и year_produced
.
id | име | цвят | година_произведено |
---|---|---|---|
1 | Тениска | жълто | 2015 |
2 | яко | синьо | 2016 |
3 | дънки | черен | 2015 |
4 | яко | синьо | 2015 |
5 | яко | зелено | 2016 |
6 | яко | жълто | 2017 |
7 | шапка | жълто | 2017 |
Нека вземем неповтарящите се имена и цветове на дрехите, произведени преди 2017 г.
Решение:
SELECT DISTINCT name, color FROM clothes WHERE year_produced < 2017;
Ето резултата:
name | цвят |
---|---|
Тениска | жълто |
яко | синьо |
дънки | черен |
яко | зелено |
Обърнете внимание, че синьото
Дискусия:
Просто използвайте DISTINCT
ключова дума след SELECT
ако искате да изберете само неповтарящи се редове. Тази ключова дума принуждава заявката да отхвърли всички дублиращи се редове въз основа само на колоните, които сте посочили.
Ето пример за избиране само на редовете, за които името на елемента е уникално:
SELECT DISTINCT name FROM clothes WHERE year_produced < 2017;
За разлика от предишната заявка, тази връща само три записа:
name | |
---|---|
Тениска | |
дънки | |
Въпреки че в оригиналната таблица има четири дънки (два сини, един зелен и един жълт), елементът се появява само веднъж в този набор от резултати благодарение на DISTINCT
ключова дума.