/ / SQL odrębny: opis, przykłady, właściwości

SQL odrębny: opis, przykłady, właściwości

Często podczas pobierania SQLinformacje z tabel, użytkownik otrzymuje zbędne dane polegające na obecności absolutnie identycznych powtarzających się wierszy. Aby wyeliminować tę sytuację, użyj odrębnego argumentu SQL w klauzuli Select. W tym artykule omówiono przykłady użycia tego argumentu, a także sytuacje, w których lepiej odmówić użycia argumentu.

Zanim przejdziemy do konkretnych przykładów, utwórzmy kilka wymaganych tabel w bazie danych.

sql odrębny

Przygotowanie tabel

Wyobraźmy sobie, że nasza baza danych przechowujeinformacje o tapecie przedstawione w dwóch tabelach. Jest to tabela Oboi (tapeta) z polami id (unikalny identyfikator), typ (rodzaj tapety - papier, winyl itp.), Kolor (kolor), struktura (struktura) i cena (cena). Oraz tabelę Ostatki (resztki) z polami id_oboi (link do unikalnego identyfikatora w tabeli Oboi) i count (ilość rolek w magazynie).

Wypełnijmy tabele danymi. Dodaj 9 rekordów do tabeli tapet:

Oboi

ID

rodzaj

kolor

struct

Cena £

1

Papier

Wielobarwność

Wytłaczane

56,9

2

Papier dwuwarstwowy

Beżowy

Gładka

114,8

3

Płyta winylowa

Pomarańczowy

Wytłaczane

504

4

Włóknina

Beżowy

Wytłaczane

1020,9

5

Papier dwuwarstwowy

Beżowy

Gładka

150,6

6

Papier

Wielobarwność

Gładka

95,4

7

Płyta winylowa

brązowy

Gładka

372

8

Włóknina

Biali

Wytłaczane

980,1

9

Tkanka

Różowy

Gładka

1166,5

W tabeli znajduje się również dziewięć wpisów z resztami:

Ostatki

id_oboi

liczyć

1

8

2

12

3

24

4

9

5

16

6

7

7

24

8

32

9

11

Zacznijmy od opisywania, jak odrębne jest używane w SQL.

Umieść odrębne w klauzuli Select

Distinct należy umieścić zaraz poWybierz słowo kluczowe w zapytaniach. Jest stosowany natychmiast do wszystkich kolumn określonych w klauzuli Select, ponieważ wyklucza absolutnie identyczne wiersze z końcowego wyniku zapytania. W związku z tym podczas pisania zapytania SQL wystarczy raz określić „wybierz odrębne”. Wyjątkiem jest użycie odrębnych wewnętrznych funkcji agregujących, które rozważymy nieco później.

sql wybierz odrębne

Należy pamiętać, że większość DBMS nie rozpoznaje zapytania w postaci:

WYBIERZ odrębne Ostatki.Count, różne Oboi. *

OD Oboi

INNER JOIN Ostatki ON Oboi.id = Ostatki.id_oboi

Argument, o którym mowa, został tutaj określony kilka razy lub został określony raz, ale przed drugą, trzecią lub inną wybieralną kolumną. Pojawi się błąd z podaniem niedokładności w składni.

Używanie odrębnych w standardowych zapytaniach

Oczywiste jest, że przy kompetentnej konstrukcji konstrukcjitabele i ich wypełnianie wewnątrz jednej tabeli wyklucza się sytuacje, gdy napotykane są absolutnie identyczne wiersze. Dlatego wykonanie zapytania „Wybierz inny *” z wyborem z jednej tabeli jest praktycznie niepraktyczne.

odrębny w sql

Wyobraź sobie sytuację, w której musimy dowiedzieć się, jaki rodzaj tapety posiadamy, dla wygody od razu posortujemy według rodzaju:

SELECT Oboi.type

Z kolejności Oboi według typu

I otrzymujemy wynik:

rodzaj

Papier

Papier

Papier dwuwarstwowy

Papier dwuwarstwowy

Płyta winylowa

Płyta winylowa

Tkanka

Włóknina

Włóknina

Jak widać, w tabeli są zduplikowane wiersze. Jeśli dodamy do klauzuli Wybierz wyraźną:

WYBIERZ odrębny typ Oboi

Z kolejności Oboi według typu

wynik otrzymujemy bez powtórzeń:

rodzaj

Papier

Papier dwuwarstwowy

Płyta winylowa

Tkanka

Włóknina

Tak więc, jeśli dane zostały poprawnie wprowadzonestolikach, to od razu na telefon lub prośbę klientów będziemy mogli odpowiedzieć, że w sklepie nie ma tapety w płynie, tapety szklanej i tapety akrylowej. Biorąc pod uwagę, że asortyment w sklepach zwykle nie ogranicza się do stu tapet, przejrzenie listy nietypowych typów byłoby dość pracochłonne.

Używanie odrębnych funkcji agregujących

Argument odrębny SQL może być używany z dowolnymfunkcja agregująca. Ale dla Min i Max nie przyniesie to żadnego efektu, a przy obliczaniu sumy lub średniej rzadko można sobie wyobrazić sytuację, w której nie byłoby konieczne uwzględnienie powtórzeń.

Powiedzmy, że chcemy wiedzieć, jak zapełniony jest nasz magazyn i w tym celu wysyłamy zapytanie, które wylicza całkowitą liczbę rolek w magazynie:

WYBIERZ sumę (Ostatki.count)

Z Ostatki

Żądanie zwróci odpowiedź 143. Jeśli zmienimy na:

WYBIERZ sumę (odrębna Ostatki.count)

Z Ostatki

otrzymujemy tylko 119, ponieważ tapety z art. 3 i 7 są w magazynie w tej samej ilości. Jednak ta odpowiedź jest ewidentnie nieprawidłowa.

Najczęściej używane w SQL w odróżnieniu od funkcji Count. Możemy więc bez trudu dowiedzieć się, ile unikalnych rodzajów tapet mamy na ogół:

SELECT count (odrębny Oboi.type)

OD Oboi

I uzyskaj wynik 5 - papier zwykły idwuwarstwowe, winylowe, tekstylne i nietkane. Z pewnością każdy widział reklamę typu: „Tylko u nas jest ponad 20 rodzajów różnych tapet!”, Co oznacza, że ​​w tym sklepie nie ma kilkudziesięciu rolek wszystkiego, ale tapety w najróżniejszych współczesnych typach.

Ciekawe, że w jednym zapytaniu możesz określićwiele funkcji Count z i bez odrębnych. Oznacza to, że jest to jedyna sytuacja, w której wyraz odrębny w Wybierz może pojawić się wiele razy.

Kiedy porzucić argument

Odrębny argument SQL należy odrzucić w jednym z dwóch przypadków:

  1. Pobierasz ze stołów i jesteś pewienniepowtarzalność wartości w każdym. W tym przypadku użycie argumentu jest niepraktyczne, ponieważ stanowi dodatkowe obciążenie serwera lub klienta (w zależności od typu DBMS).
  2. Boisz się utraty potrzebnych danych. Pozwól nam wyjaśnić.

Załóżmy, że szef prosi Cię o wyświetlenie posiadanej tapety za pomocą zaledwie dwóch kolumn - rodzaju i koloru. Z przyzwyczajenia używasz odrębnego argumentu:

WYBIERZ odrębny Oboi.type, Oboi.color

OD Oboi

ZAMÓWIENIE WEDŁUG Oboi.type

I - tracisz część danych:

rodzaj

kolor

Papier

Wielobarwność

Papier dwuwarstwowy

Beżowy

Płyta winylowa

brązowy

Płyta winylowa

Pomarańczowy

Tkanka

Różowy

Włóknina

Beżowy

Włóknina

Biali

Może się wydawać, że mamy tylko jeden rodzaj tapet papierowych (zwykły i dwuwarstwowy), chociaż tak naprawdę nawet w naszym małym stoliku każdy z nich zawiera dwa artykuły (wynik jest bez wyrazu):

rodzaj

kolor

Papier

Wielobarwność

Papier

Wielobarwność

Papier dwuwarstwowy

Beżowy

Papier dwuwarstwowy

Beżowy

Płyta winylowa

brązowy

Płyta winylowa

Pomarańczowy

Tkanka

Różowy

Włóknina

Biali

Włóknina

Beżowy

Dlatego tak jak w przypadku pisania każdego zapytania, z wyraźnym argumentem, należy uważnie i kompetentnie rozwiązać problem z jego zastosowaniem, w zależności od wykonywanego zadania.

Alternatywa dla odrębnych

Przeciwieństwem odrębności jest argumentWszystko. Powielone linie są zachowywane po zastosowaniu. Ale ponieważ domyślnie DBMS uważa, że ​​powinny być wyświetlane wszystkie wartości, argument All jest bardziej kwalifikatorem niż prawdziwym argumentem funkcjonalnym.

odrębny opis sql
Mamy nadzieję, że teraz rozumiesz, kiedyodrębne (SQL). Opis dostarczył Ci pełnej informacji o stosowności wykorzystania tego argumentu w rozwiązywaniu różnych problemów. W końcu, jak się okazało, nawet tak prosty argument w swoim zastosowaniu skrywa dość namacalne prawdopodobieństwo utraty części danych i wyświetlenia niedokładnych informacji.

Podobało mi się:
0
Popularne posty
Duchowy rozwój
Jedzenie
tak