KWALIFIKACJA INF3 - STYCZEŃ 2021

PYTANIE NR 15.
Aby w wyniku zapytania wyeliminować powtarzające się wiersze, należy użyć klauzuli
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
DISTINCT stosuje się w zapytaniu SELECT, aby usunąć z wyniku powtarzające się wiersze (zwrócić tylko unikalne rekordy dla wskazanych kolumn). LIMIT ogranicza liczbę zwróconych wierszy, a ORDER BY jedynie je sortuje. UNIQUE dotyczy zwykle ograniczeń w tabeli, nie deduplikacji wyniku.

Pełne wyjaśnienie:

Jeżeli zapytanie ma zwrócić tylko unikalne (niepowtarzające się) wiersze, używa się słowa kluczowego DISTINCT w zapytaniu SELECT. Mechanizm ten usuwa duplikaty z wyniku, tzn. gdy w rezultacie pojawiłyby się identyczne wiersze (dla wybranych kolumn), pozostaje tylko jedna ich kopia.

Odpowiedź "UNIQUE" bywa myląca, ponieważ słowo to kojarzy się z "unikalnością", ale w praktyce baz danych najczęściej odnosi się do ograniczeń integralności (np. wymuszania unikalnych wartości w kolumnie/kolumnach tabeli). To nie jest typowa klauzula służąca do eliminowania duplikatów w samym wyniku zapytania SELECT.

Odpowiedź "LIMIT" jest niepoprawna, bo ogranicza liczbę zwróconych rekordów (np. zwróć 10 pierwszych wierszy), ale nie gwarantuje, że wśród tych rekordów nie będzie powtórzeń. Można więc dostać mniej wierszy, ale nadal z duplikatami.

Odpowiedź "ORDER BY" również jest niepoprawna: sortuje wynik według wskazanych kolumn (rosnąco/malejąco), jednak nie usuwa powtarzających się wierszy. Duplikaty po sortowaniu nadal pozostają duplikatami, tylko w uporządkowanej kolejności.

W praktyce (np. w aplikacjach internetowych) DISTINCT jest przydatne m.in. do budowania list filtrów (unikalne miasta, kategorie, statusy) oraz do ograniczania efektu ubocznego złączeń (JOIN), które potrafią zwielokrotnić wiersze w rezultacie.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
DISTINCT usuwa z wyniku zapytania powtarzające się wiersze, zwracając tylko unikalne rekordy dla wskazanych kolumn. Działa na zestawie kolumn w SELECT: jeśli cały wiersz (dla tych kolumn) jest identyczny, zostanie zredukowany do jednej pozycji.
ORDER BY zmienia tylko kolejność wierszy (sortuje), nie zmienia ich zawartości ani liczby. DISTINCT wykonuje deduplikację, czyli usuwa powtórzenia wierszy w rezultacie. Sortowanie może ułatwić zauważenie duplikatów, ale ich nie eliminuje.
Nie. DISTINCT dotyczy wyniku zapytania SELECT (usuwa powtórzenia w rezultacie). UNIQUE najczęściej dotyczy ograniczenia w tabeli lub indeksu, które wymusza niepowtarzalność danych przy zapisie. To dwa różne mechanizmy i są używane w innym celu.
DISTINCT porównuje całe wiersze zbudowane z wybranych kolumn. Jeśli (kolumna1, kolumna2, ...) powtarza się identycznie w kilku rekordach, w wyniku pozostanie tylko jeden taki wiersz. Jeśli różni się choć jedna z tych kolumn, wiersze są traktowane jako różne.
GROUP BY stosuje się, gdy oprócz deduplikacji chcesz liczyć, sumować lub agregować dane (np. COUNT, SUM). DISTINCT jest prostsze, gdy potrzebujesz tylko unikalnych wierszy bez obliczeń. W praktyce oba podejścia mogą dać podobny efekt, ale mają inne zastosowania.
Tak, może wpływać. Usuwanie duplikatów wymaga dodatkowego przetworzenia (np. sortowania lub użycia struktur do porównywania wierszy), więc przy dużych zbiorach danych bywa kosztowne. Warto używać DISTINCT tylko wtedy, gdy duplikaty rzeczywiście mogą się pojawić i są niepożądane.
Najczęściej myli się DISTINCT z ORDER BY (sortowanie) albo z LIMIT (ograniczenie liczby rekordów). Częsty błąd to też wybór UNIQUE, bo "brzmi jak unikalny", mimo że zwykle odnosi się do ograniczeń w tabeli. Pomaga zapamiętać: DISTINCT = unikalny wynik.
Nie. LIMIT tylko ogranicza liczbę zwróconych rekordów (np. pierwsze 10). Jeśli wśród tych rekordów są duplikaty, LIMIT ich nie usunie. Aby usuwać duplikaty, potrzebujesz DISTINCT albo innej techniki deduplikacji (np. GROUP BY).
Jeśli po połączeniu tabel (JOIN) liczba rekordów rośnie "niespodziewanie", to często znak, że relacja jest 1:N i wiersze się powielają. DISTINCT może ukryć ten efekt w wyniku, ale warto też sprawdzić warunki JOIN. Najlepiej używać DISTINCT świadomie, nie jako "łatki".
Ćwicz krótkie zapytania i kojarz funkcje słów kluczowych: WHERE filtruje, ORDER BY sortuje, LIMIT ogranicza liczbę wyników, DISTINCT usuwa powtórzenia. Twórz przykłady z danymi, gdzie duplikaty faktycznie występują, bo wtedy łatwiej zobaczyć różnicę w rezultatach.
info

Statystycznie 83% uczniów zna prawidłową odpowiedź. średnio łatwe

Specjaliści zwracają uwagę: "DISTINCT stosuje się w zapytaniu SELECT, aby usunąć z wyniku powtarzające się wiersze (zwrócić tylko unikalne rekordy dla wskazanych kolumn)."

Źródła:

  • PostgreSQL Documentation: SELECT, sekcja "DISTINCT" (Current), https://www.postgresql.org/docs/current/sql-select.html (dostęp: 2026-03-02)
  • MySQL 8.0 Reference Manual: SELECT Statement, sekcja "DISTINCT", https://dev.mysql.com/doc/refman/8.0/en/select.html (dostęp: 2026-03-02)
  • Microsoft Learn: SELECT (Transact-SQL), informacje o DISTINCT, https://learn.microsoft.com/en-us/sql/t-sql/queries/select-transact-sql (dostęp: 2026-03-02)

Materiały:

  • Dokumentacja wybranego systemu DBMS (sekcja SELECT DISTINCT)
  • Kurs podstaw SQL: SELECT, WHERE, ORDER BY, LIMIT oraz agregacje
  • Zadania praktyczne na deduplikację wyników z użyciem DISTINCT i GROUP BY

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego