0Pricing
SQL Academy · Lekcja

Podzapytania skalarne, wierszowe i tabelowe

Używaj podzapytań zwracających pojedynczą wartość, pojedynczy wiersz lub całą tabelę i umieszczaj je w klauzulach SELECT, FROM oraz WHERE.

Podzapytania skalarne, wierszowe i tabelowe to bezpłatna lekcja SQL Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej SQL Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs SQL Academy zawiera 4 lekcji w sumie.

Czym jest podzapytanie?

Podzapytanie to instrukcja SELECT umieszczona wewnątrz innej instrukcji SQL. Może być:

  • podzapytaniem skalarnym — zwraca pojedynczą wartość
  • podzapytaniem wierszowym — zwraca pojedynczy wiersz
  • podzapytaniem tabelowym — zwraca relację (używaną w FROM)

Podzapytanie skalarne

Używane wszędzie tam, gdzie oczekiwana jest pojedyncza wartość:

SELECT id, total,
       total - (SELECT AVG(total) FROM orders) AS diff_from_avg
FROM orders
WHERE created_at >= NOW() - INTERVAL '30 days';

Podzapytanie wierszowe

Zwraca jeden wiersz zawierający wiele kolumn. Rzadziej używane, głównie wraz z konstruktorami wierszy:

SELECT *
FROM orders
WHERE (status, country) = (
  SELECT status, country FROM orders WHERE id = 1
);

Podzapytanie tabelowe w FROM

Traktuj wynik zapytania jak tymczasową tabelę:

SELECT country, AVG(big_order_total) AS avg_big
FROM (
  SELECT country, total AS big_order_total
  FROM orders
  WHERE total > 1000
) AS sub
GROUP BY country;

Nadawanie aliasów podzapytaniom w FROM

Każde podzapytanie w FROM wymaga aliasu w PostgreSQL — nawet jeśli nie jest on używany:

SELECT * FROM (SELECT 1) sub;     -- "sub" required

Podzapytania w WHERE

Filtruj na podstawie wyprowadzonego zbioru wartości:

SELECT * FROM users
WHERE id IN (
  SELECT user_id FROM orders WHERE total > 100
);

EXISTS / NOT EXISTS

Sprawdź, czy podzapytanie zwraca co najmniej jeden wiersz:

SELECT * FROM users u
WHERE EXISTS (
  SELECT 1 FROM orders o WHERE o.user_id = u.id
);

Podzapytania w SELECT

Umieść skalarne podzapytanie wykonywane dla każdego wiersza:

SELECT id, full_name,
  (SELECT COUNT(*) FROM orders o WHERE o.user_id = u.id) AS order_count
FROM users u;

-- Often readable, but a LEFT JOIN + GROUP BY is usually faster.

Podzapytania jako wyrażenia

Skalarne podzapytanie zwracające więcej niż jeden wiersz powoduje błąd:

SELECT (SELECT email FROM users);
-- ERROR: more than one row returned by a subquery used as an expression

Kiedy przekształcić podzapytanie w JOIN

Wiele konstrukcji „x IN (SELECT...)” można przepisać jako JOIN. Wybierz formę, która jest czytelniejsza; współczesne planery często tworzą taki sam plan.

Podzapytania a CTE

Jeśli tego samego podzapytania potrzebujesz dwukrotnie, nadaj mu nazwę za pomocą CTE — zostanie to omówione w następnej lekcji.

Podsumowanie

Podzapytania występują w trzech rodzajach.

  • Skalarne w SELECT/WHERE
  • Wierszowe w testach równości
  • Tabelowe w FROM
  • EXISTS do sprawdzania „dowolnego dopasowania”

Szybkie sprawdzenie

Jaka forma podzapytania jest używana wewnątrz klauzuli FROM jako tymczasowa tabela?

Często zadawane pytania

Czy lekcja „Podzapytania skalarne, wierszowe i tabelowe” jest bezpłatna?

Tak — pełny tekst „Podzapytania skalarne, wierszowe i tabelowe” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu SQL Academy, przejdź na CoddyKit PRO. Kurs SQL Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Podzapytania skalarne, wierszowe i tabelowe”?

Używaj podzapytań zwracających pojedynczą wartość, pojedynczy wiersz lub całą tabelę i umieszczaj je w klauzulach SELECT, FROM oraz WHERE. Ćwiczysz SQL Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć SQL Academy?

Nie wymagamy żadnego doświadczenia. SQL Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Podzapytania skalarne, wierszowe i tabelowe”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji SQL Academy?

Tak. Każda lekcja SQL Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Podzapytania skalarne, wierszowe i tabelowe
  2. Podzapytania skorelowane i nieskorelowane
  3. Wspólne wyrażenia tabelowe (WITH)
  4. Rekurencyjne CTE dla hierarchii
← Powrót do SQL Academy