Zapytania SQL są mięsem i ziemniakami CRUD RDBMS (tworzenie, odczytywanie, aktualizowanie, usuwanie). Jednak gdy Twoja aplikacja lub baza danych przedsiębiorstwa rośnie, potrzeba inteligentnych zapytań do pobierania warunkowych, specyficznych dla wymagań danych staje się koniecznością.
SQL jest stosunkowo obszerny i obejmuje wiele funkcji — z których każda jest dobrze dostosowana do różnych zastosowań biznesowych. Jedna z takich funkcji obejmuje użycie podzapytań.
Aby Twoje kody były wydajne i efektywne, możesz używać podzapytań w swoich kodach SQL do pobierania danych, manipulowania istniejącymi zmiennymi i osiągania wielu celów za jednym razem.
Co to są podzapytania SQL?
Zapytanie podrzędne to zapytanie zagnieżdżone, które działa jako parametr w innym zapytaniu głównym. Podzapytanie to an wewnętrzne zapytanie, podczas gdy głównym zapytaniem jest zewnętrzne zapytanie.
Zapytanie podrzędne rzekomo zwraca dane jako argument w nawiasie dla zapytania głównego, podczas gdy zapytanie główne dalej pobiera wynik końcowy.
Podzapytania są osadzone w Wybierać oświadczenie lub w Gdzie klauzula. Taka struktura pozwala podzapytaniu zachowywać się jak dobrze opisany warunek filtrowania danych. Niestety, podzapytania mogą używać tylko Grupuj według komendy i nie Zamów przez poleceń, ponieważ są one dozwolone tylko w głównym zapytaniu.
Związane z: Wszystko, co musisz wiedzieć o instrukcji SQL GROUP BY
Zwykle każde podzapytanie składa się z jednej kolumny z Wybierać klauzula. Istnieją jednak scenariusze, w których zapytanie główne ma wiele kolumn. Podzapytanie może być zagnieżdżone w innym podzapytaniu, czyniąc je podzapytaniem zagnieżdżającym.
Ścisłość podzapytania jest następująca:
Wybierz nazwa_kolumny z tabeli, gdzie warunek=
(SELECT conditional_column FROM table) jako alias;
Załóżmy na przykład, że masz następującą tabelę:
ID | Imię | Drugie imię | Opłata agencyjna |
1 | Jan | Knot | 5000 |
2 | Robert | Graham | 4000 |
3 | Stephen | Hicks | 8000 |
4 | Pion | Marley | 1000 |
5 | Mary | Ellen | 9000 |
W tej tabeli, aby wyciągnąć nazwiska osób, które zarabiają powyżej średniej opłaty agencyjnej, możesz napisać podzapytanie zamiast pisać wiele wierszy kodu.
Związane z: Jak stworzyć tabelę w SQL
Oto jak wygląda zapytanie:
Wybierz * ze szczegółów_agenta
gdzie Agency_Fee > (wybierz średnią (Agency_Fee) z agent_details);
Polecenie przed > znak jest zapytaniem zewnętrznym, natomiast wszystko po > znak to wewnętrzne zapytanie.
Zapytanie wewnętrzne obliczy średnią opłatę agencyjną w ramach podzapytania, a zapytanie zewnętrzne wyświetli wszystkie wartości, które są większe niż obliczona wartość średnia.
Jak używać podzapytań w SQL?
Istnieje kilka różnych sposobów wykorzystania podzapytań w SQL.
Podzapytania z klauzulą Gdzie
Jedna z najbardziej podstawowych struktur podzapytania w SQL znajduje się w klauzuli Where. To najprostszy sposób na zdefiniowanie tego, czego szukasz. Instrukcja select zwraca wartości zgodnie z warunkami podzapytania i używa ich jako parametru dla zapytania głównego.
Struktura zapytania:
wybierz * z nazwa_tabeli
gdzie nazwa_kolumny = (wybierz nazwa_kolumny z nazwa_tabeli);
Wyjaśnijmy to na przykładzie.
Załóżmy, że chcesz znaleźć drugą najwyższą opłatę agencyjną w tabeli agency_details. Aby to zrobić, w SQL istnieją alternatywne funkcje; niemniej jednak najlepszą metodą jest użycie podzapytania.
Oto jak możesz zdefiniować podzapytanie:
wybierz *, maks. (opłata_agencji)
od szczegółów_agenta
gdzie Agency_fee < (wybierz max (Agency_fee) z agent_details);
Wynikowe oświadczenie pokaże ci 8000, która jest drugą najwyższą opłatą w podanej tabeli. Po uruchomieniu zapytania podzapytanie oblicza maksymalną wartość z listy opłat. Najwyższa kwota opłaty (9000) jest przechowywane w pamięci.
Po obliczeniu tej części obliczana jest druga część zapytania, która znajduje drugą najwyższą opłatę z tabeli (ponieważ < używany jest znak). Wynik końcowy to 8000, która jest drugą co do wielkości opłatą w tabeli.
Podzapytania w ramach klauzuli Od
Inną odmianą w podzapytaniach jest przekazanie warunku w z klauzula. W podobny sposób zapytanie wewnętrzne jest przetwarzane najpierw, a zapytanie zewnętrzne jest przetwarzane później. Zapytanie wewnętrzne przefiltruje dane i wyświetli wyniki, gdzie identyfikator = 3.
Oto zapytanie w celach informacyjnych:
wybierz a.* z (
wybierz agency_fee z agent_details
gdzie ID= 3) jako a;
To bardzo podstawowa struktura; jednak im bardziej złożone są Twoje tabele danych, otrzymasz więcej wierszy danych, które pasują do Twoich warunków.
Używanie podzapytań z instrukcją Insert In Statement
Jeśli chcesz zaktualizować istniejącą tabelę o nowe wiersze danych, możesz użyć Włóż w oświadczenie. Zapytanie podrzędne może okazać się bardzo korzystne, jeśli chcesz dodać wartości na podstawie określonych warunków.
Struktura zapytania:
wstaw do nazwa_tabeli
wybierz * z nazwa_tabeli
gdzie nazwa_kolumny = warunki;
wybierz * z nazwa_tabeli;
Oto przykład użycia instrukcji insert into z podzapytaniem:
wstaw do szczegółów_agenta
wybierz * ze szczegółów_agenta
gdzie agency_fee w (1000, 5000);
wybierz * z agent_details;
Po uruchomieniu zapytania wartości pasujące do warunku zostaną ponownie wstawione do istniejącej tabeli. ten wybierać * reference pobiera wszystkie kolumny razem i wstawia je do tabeli agent_details bez zmian. ten w Instrukcja służy do jednoczesnego definiowania wielu warunków filtrowania.
Używanie podzapytań z instrukcją aktualizacji
Istnieją sytuacje, w których chcesz zaktualizować tabele bazowe podczas wykonywania zapytań. Aby to zrobić, możesz użyć aktualizacja oświadczenie wraz z poleceniami zapytania.
W ten sposób napiszesz podzapytanie, aby w jednym przypadku zaktualizować informacje w tabeli:
zaktualizuj nazwę_tabeli
ustaw nazwa_kolumny = nowa_wartość
gdzie nazwa_kolumny =
(wybierz nazwa_kolumny z nazwa_tabeli gdzie = );
Oto przykład ilustrujący użycie instrukcji aktualizacji:
AKTUALIZUJ szczegóły_agenta
SET agency_fee = 35000
GDZIE opłata_agencji =
(SELECT agency_fee FROM agent_details WHERE Imię='Jan');
wybierz * z agent_details;
Podzapytanie przefiltruje kolumnę agency_fee i wyróżni wiersze, w których pasuje imię i nazwisko Jan. Następnie wykonywane jest zapytanie zewnętrzne, w którym opłata agencyjna jest aktualizowana do 35000 dla Johna Wicka.
Możesz przekazać wybierać * oświadczenie do sprawdzenia wyników końcowych; zauważysz, że opłata agencyjna dla Johna Wicka została zaktualizowana do 35000, ponieważ istnieje tylko instancja spełniająca warunki określone w zapytaniu.
Używanie podzapytań z instrukcją Delete
Podobnie jak instrukcja aktualizacji, w której aktualizujesz wiersze danych w istniejącej tabeli, kasować instrukcja usuwa wiersze danych na podstawie warunku.
Struktura instrukcji delete to:
usuń z nazwa_tabeli, gdzie nazwa zmiennej/kolumny =
(wybierz nazwa_kolumny z nazwa_tabeli gdzie = warunek);
Oto przykład:
Usuń z agent_details
gdzie Imię IN
(wybierz First_name z agent_details, gdzie agency_fee = 9000);
wybierz * z agent_details;
Używanie podzapytań w SQL
Podzapytania to doskonała funkcja w SQL, która pozwala uniknąć pisania niekończących się linijek niepotrzebnego kodu. Kiedy jesteś w stanie wykorzystać podstawowe funkcje podzapytań do licytacji, nigdy nie będziesz chciał zagłębiać się w zawiłości kodowania SQL.
Zawsze najlepiej jest poszerzyć posiadaną wiedzę na temat SQL, aby mieć pewność, że zawsze jesteś na szczycie swojej gry. Zapewniamy, że ściągawki SQL mogą za jednym spojrzeniem podpowiedzieć, jak odświeżyć podstawy.
Chcesz dowiedzieć się więcej o SQL? Posiadanie uchwytu na różne polecenia zapytań SQL to świetny sposób na osiągnięcie postępu.
Czytaj dalej
- Programowanie
- Programowanie
- SQL
- Narzędzia programistyczne

Gaurav Siyal ma dwuletnie doświadczenie w pisaniu dla szeregu firm zajmujących się marketingiem cyfrowym i dokumentach dotyczących cyklu życia oprogramowania.
Zapisz się do naszego newslettera
Dołącz do naszego newslettera, aby otrzymywać porady techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!
Kliknij tutaj, aby zasubskrybować