Dlaczego poniższe działania nie działają?
SELECT name FROM (SELECT name FROM agentinformation)
Wydaje mi się, że moje rozumienie SQL jest błędne, ponieważ myślałem, że zwróci to samo, co
SELECT name FROM agentinformation
Czy wewnętrzna instrukcja select nie tworzy zestawu wyników, który zewnętrzna instrukcja SELECT wysyła następnie do zapytania?
where
klauzula dla zewnętrznego zapytania?select
bez aliasu.Odpowiedź udzielana przez Joe Stefanelli jest już prawidłowa.
Musimy utworzyć alias podzapytania, ponieważ zapytanie wymaga obiektu tabeli, który otrzymamy po utworzeniu aliasu dla podzapytania. Koncepcyjnie wyniki podzapytania są podstawiane w zewnętrznym zapytaniu. Ponieważ potrzebujemy obiektu tabeli w zewnętrznym zapytaniu, musimy utworzyć alias wewnętrznego zapytania.
Instrukcje zawierające podzapytanie zwykle przyjmują jedną z następujących form:
Sprawdź więcej reguł i typów podkwerend .
Więcej przykładów zagnieżdżonych zapytań.
IN / NOT IN - Ten operator pobiera dane wyjściowe zapytania wewnętrznego po wykonaniu zapytania wewnętrznego, które może mieć zero lub więcej wartości, i wysyła je do zapytania zewnętrznego. Zapytanie zewnętrzne pobiera następnie wszystkie pasujące wiersze [operator IN] lub niepasujące wiersze [operator NOT IN].
DOWOLNY - [> DOWOLNY lub DOWOLNY operator pobiera listę wartości wygenerowanych przez zapytanie wewnętrzne i pobiera wszystkie wartości, które są większe niż minimalna wartość listy. The
np.> DOWOLNY (100,200,300), DOWOLNY operator pobierze wszystkie wartości większe niż 100.
np.> ALL (100 200 300), operator ALL pobierze wszystkie wartości większe niż 300.
źródło