Database
 sql >> база данни >  >> RDS >> Database

Как да премахнете дублиращи се редове в SQL

Проблем:

Искате да премахнете всички дублиращи се редове от набора от резултати на заявка, така че всеки ред да се показва само веднъж.

Пример:

Нашата база данни има таблица с име 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 ключова дума.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Статистика за изчакване на коляното:CXPACKET

  2. Модел на база данни за таксиметрова услуга

  3. SQL SUM() за начинаещи

  4. Въведение в извличането на данни

  5. ETL срещу ELT:Ние смятаме, вие преценете