Używamy cookies, żeby zwiększyć Twoje doświadczenia na stronie
CodeWorlds

Podzapytanie skalarne w WHERE

Pierwszy korytarz Labiryntu jest najprostszy. Podzapytanie skalarne to takie, które zwraca dokładnie jedną wartość - jeden wiersz i jedną kolumnę. Dzięki temu możemy użyć go wszędzie tam, gdzie SQL spodziewa się pojedynczej liczby lub tekstu.

Porównanie ze średnią

Najczęściej wstawiamy je do klauzuli WHERE, by porównać każdy wiersz z wynikiem obliczenia:

1SELECT tytul, cena
2FROM ksiazki
3WHERE cena > (SELECT AVG(cena) FROM ksiazki);

Podzapytanie

(SELECT AVG(cena) FROM ksiazki)
zwraca jedną liczbę - średnią cenę. Zapytanie zewnętrzne porównuje z nią cenę każdej książki i zostawia tylko te droższe od średniej.

Inne funkcje agregujące

W podzapytaniu skalarnym świetnie sprawdzają się funkcje takie jak

MAX
,
MIN
,
COUNT
:

1SELECT tytul
2FROM ksiazki
3WHERE rok_wydania = (SELECT MAX(rok_wydania) FROM ksiazki);

To zapytanie znajdzie najnowszą księgę w Bibliotece - tę z największym rokiem wydania. Gdybyśmy chcieli najstarszą, użylibyśmy

MIN
zamiast
MAX
.

Ostrożnie ze skalarnością

Podzapytanie skalarne musi zwrócić jedną wartość. Gdyby zwróciło wiele wierszy, a użyjemy operatora

=
lub
>
, Biblioteka zaprotestuje błędem. Jeśli spodziewasz się wielu wyników - potrzebny będzie operator
IN
, który poznasz w następnym korytarzu.

@name

Przejdź do CodeWorlds