poniedziałek, 3 września 2018

SQL - obsługa duplikatów


SQL - obsługa duplikatów

Może wystąpić sytuacja, gdy w tabeli znajduje się wiele duplikatów rekordów. Podczas pobierania takich wpisów bardziej sensowne jest pobieranie tylko unikatowych rekordów zamiast pobierania zduplikowanych rekordów.
Słowo kluczowe SQL DISTINCT, które już omówiliśmy, jest używane w połączeniu z instrukcją SELECT, aby wyeliminować wszystkie zduplikowane rekordy i pobiera tylko unikalne rekordy.
Składnia
Podstawowa składnia słowa kluczowego DISTINCT w celu wyeliminowania duplikatów jest następująca.
SELECT DISTINCT kolumna1, kolumna2,.....kolumnaN
FROM nazwa_tabeli
WHERE [warunek]

Przykład
Rozważ tabelę KLIENCI zawierającą następujące rekordy.
+----+-----------+------+------------+----------+
| id | nazwisko  | wiek | adres      | pensja   |
+----+-----------+------+------------+----------+
|  1 | Zawadzki  |   32 | Warszawska |  2000.00 |
|  2 | Kowalczyk |   25 | Sokratesa  |  1500.00 |
|  3 | Kot       |   23 | Darwina    |  2000.00 |
|  4 | Kowalska  |   25 | Modlińska  |  6500.00 |
|  5 | Sapal     |   27 | Wspólna    |  8500.00 |
|  6 | Nowak     |   22 | Blizne     |  4500.00 |
|  7 | Makowska  |   24 | Piaseczno  | 10000.00 |
+----+-----------+------+------------+----------+
Najpierw zobaczmy, jak następujące zapytanie SELECT zwraca zduplikowane rekordy wynagrodzeń.
SQL> SELECT PENSJA FROM KLIENCI
   ORDER BY PENSJA;
Dałoby to następujący wynik, gdy pensja o wysokości 2000 występuje dwukrotnie, co jest duplikatem z pierwotnej tabeli.
+----------+
| pensja   |
+----------+
|  1500.00 |
|  2000.00 |
|  2000.00 |
|  4500.00 |
|  6500.00 |
|  8500.00 |
| 10000.00 |
+----------+
Teraz, pozwól nam użyć słowa kluczowego DISTINCT z powyższym zapytaniem SELECT i zobacz wynik.
SQL> SELECT DISTINCT PENSJA FROM KLIENCI
   ORDER BY PENSJA;
W ten sposób uzyskamy następujący wynik, jeśli nie będziemy mieli żadnych duplikatów.
+----------+
| pensja   |
+----------+
|  1500.00 |
|  2000.00 |
|  4500.00 |
|  6500.00 |
|  8500.00 |
| 10000.00 |
+----------+

Brak komentarzy:

Prześlij komentarz