Zagnieżdżona instrukcja select w SQL Server

Czy ktoś może mi pomóc zrozumieć, dlaczego poniższe nie działa?

SELECT name FROM (SELECT name FROM agentinformation)

Myślę, że moje rozumienie SQL jest złe, ponieważ myślałem, że zwróci to to samo co

SELECT name FROM agentinformation

Czy wewnętrzna instrukcja select nie tworzy zbioru wynikowego, którego zewnętrzna instrukcja SELECT zapytuje?

Author: Somnath Muluk, 2011-01-07

2 answers

Musisz zmienić nazwę zapytania podrzędnego.

SELECT name FROM (SELECT name FROM agentinformation) a  

Lub być bardziej wyraźne

SELECT a.name FROM (SELECT name FROM agentinformation) a  
 513
Author: Joe Stefanelli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-07 20:29:24

Odpowiedź udzielona przez Joe Stefanelli jest już poprawna.

SELECT name FROM (SELECT name FROM agentinformation) as a  

Musimy utworzyć alias subquery, ponieważ zapytanie wymaga obiektu table, który otrzymamy z tworzenia aliasu do subquery. Koncepcyjnie wyniki zapytania podrzędnego są podstawiane do zapytania zewnętrznego. Ponieważ potrzebujemy obiektu table w zewnętrznym zapytaniu, musimy utworzyć alias zapytania wewnętrznego.

Wyrażenia zawierające podquery zazwyczaj przyjmują jeden z następujących formatów:

  • gdzie wyrażenie [Nie] w (subquery)
  • gdzie wyrażenie comparison_operator [ANY / ALL] (subquery)
  • gdzie [nie] istnieje (subquery)

Sprawdź więcej subquery rules i subquery types.

Więcej przykładów zagnieżdżonych zapytań podrzędnych.

  1. In / NOT IN – operator ten pobiera wynik zapytania wewnętrznego po wykonaniu zapytania wewnętrznego, które może mieć zero lub więcej wartości i wysłać je do zapytania zewnętrznego. Zewnętrzne zapytanie następnie pobiera wszystkie pasujące [W operator] or not non matching [NOT IN operator] rows.

  2. Any - [>ANY lub dowolny operator pobiera listę wartości wytworzonych przez wewnętrzne zapytanie i pobiera wszystkie wartości, które są większe niż minimalna wartość listy.

Np. >ANY(100,200,300), operator ANY pobierze wszystkie wartości większe niż 100.

  1. all - [>all Lub all operator pobiera listę wartości wytworzonych przez wewnętrzne zapytanie i pobiera wszystkie wartości, które są większe niż maksimum listy. Na

Np. >ALL(100,200,300), operator ALL pobierze wszystkie wartości większe niż 300.

  1. EXISTS-słowo kluczowe EXISTS tworzy wartość logiczną [TRUE / FALSE]. To EXISTS sprawdza istnienie wierszy zwracanych przez podrzędne zapytanie.
 29
Author: Somnath Muluk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:18:26