Poza łączeniem wielu tabel w jednym zapytaniu, język SQL umożliwia nam zadawanie zapytań bazujących na "podzapytaniach". Innymi słowy w jednym zapytaniu możemy przefiltrować np. dane raz, i potem wykorzystać je do kolejnego "odpytania":
Powyższe zapytanie najpierw wybiera listę produktów z tabeli "produkty" - są to te, które id mają większe lub równe 3, a następnie biorąc je jako warunek brzegowy, szuka rozwiązania kwerendy "nadrzędnej". Przykład jest banalny, jednak bardziej chodzi o pokazanie samej idei podzapytań, niż o istotę wyniku.
Innym ciekawym przykładem bardziej złożonego zapytania jest próba uzyskania w kolumnach obok siebie kolejnych wartości ułożonych w kolejności np. rosnącej. Wyobraźmy sobie, że potrzebujemy, aby do określonego "id" z tabeli "sprzedaż" przypisać "id" ale kolejnego rekordu (czyli następne). Wówczas musielibyśmy stworzyć następującą kwerendę:
Pomimo, że w tym przypadku nie mamy jawnie zdefiniowanego (żeby nie powiedzieć "napisanego") podzapytania, sposób łączenia danych niejako tworzy je: łącząc tabelę z samą sobą opieramy się na jednym polu tabeli i na jego bazie dopiero wybieramy inne, które jest kolejnym po wcześniej wybranym. Innymi słowy: dla każdego "id" z tabeli "sprzedaz" oznaczonej aliasem "a" zapytanie szuka najmniejszej wartości, większej od wspomnianej w tej samej tabeli, oznaczonej jednak aliasem "b".