FROM (Transact-SQL)

Określa tabele, widoki, uzyskanych tabelach i połączonych tabel używane w SELECT, DELETE i UPDATE instrukcji.W instrukcja SELECT po liście zawiera stałe, zmienne i wyrażeń arytmetyczny (nie nazwy kolumn), z wyjątkiem jest wymagana klauzula FROM.

Topic link iconKonwencje składni języka Transact-SQL

[ FROM { <table_source> } [ ,...n ] ] 
<table_source> ::= 
{
        table_or_view_name [ [ AS ] table_alias ] [ <tablesample_clause> ] 
        [ WITH ( < table_hint > [ [ , ]...n ] ) ] 
    | rowset_function [ [ AS ] table_alias ] 
        [ ( bulk_column_alias [ ,...n ] ) ] 
        | user_defined_function [ [ AS ] table_alias ] ]
    | OPENXML <openxml_clause> 
    | derived_table [ AS ] table_alias [ ( column_alias [ ,...n ] ) ] 
    | <joined_table> 
    | <pivoted_table> 
    | <unpivoted_table>
      | @variable [ [ AS ] table_alias ]
        | @variable.function_call ( expression [ ,...n ] ) [ [ AS ] table_alias ] [ (column_alias [ ,...n ] ) ]
}
<tablesample_clause> ::=
    TABLESAMPLE [SYSTEM] ( sample_number [ PERCENT | ROWS ] ) 
        [ REPEATABLE ( repeat_seed ) ] 

<joined_table> ::= 
{
    <table_source> <join_type> <table_source> ON <search_condition> 
    | <table_source> CROSS JOIN <table_source> 
    | left_table_source { CROSS | OUTER } APPLY right_table_source 
    | [ ( ] <joined_table> [ ) ] 
}
<join_type> ::= 
    [ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
    JOIN

<pivoted_table> ::=
        table_source PIVOT <pivot_clause> [ AS ] table_alias

<pivot_clause> ::=
        ( aggregate_function ( value_column [ [ , ]...n ]) 
        FOR pivot_column 
        IN ( <column_list> ) 
    ) 

<unpivoted_table> ::=
        table_source UNPIVOT <unpivot_clause> [ AS ] table_alias

<unpivot_clause> ::=
        ( value_column FOR pivot_column IN ( <column_list> ) ) 

<column_list> ::=
          column_name [ ,...n ]

Argumenty

  • <table_source>
    Określa tabelę, widok, zmiennej Tabela lub urządzenie źródłowe tabeli pochodnej z lub bez alias, użyj w Transact-SQL Instrukcja. Do tabela 256 źródła mogą być używane w instrukcja, mimo że limitu może się różnić w zależności od dostępnej pamięci i złożoności innych wyrażeń w kwerendzie.Wykonania poszczególnych kwerend może nie obsługiwać więcej niż 256 źródła w tabela.

    Uwaga

    Kwerendy wydajności może ponieść z wielu tabel w kwerendzie.Czas kompilacji i optymalizacji ma także wpływ dodatkowe czynniki.Obejmuje to obecność indeksy i widoków indeksowanych na każdym <table_source> i rozmiar <select_list> w instrukcja SELECT.

    The order of table sources after the FROM keyword does not affect the result set that is returned.SQL Server returns errors when duplicate names appear in the FROM clause.

  • table_or_view_name
    To nazwa tabela lub widoku.

    Jeśli tabela lub widok nie istnieje w innej bazie danych, w tym samym wystąpieniu SQL Server, użyj pełnej kwalifikowanej nazwy w formularzu bazy danych.schemat.object_name.

    Jeśli tabela lub widok nie istnieje poza wystąpienie SQL Serverl, użyj nazwy four-part w formularzu linked_server.katalog.schemat.obiekt.Aby uzyskać więcej informacji zobaczsp_addlinkedserver (języka Transact-SQL).Four-part nazwy, która jest skonstruowana przy użyciu OPENDATASOURCE funkcja jako część serwera nazwy można również określić urządzenie źródłowe tabela zdalnej.Jeśli określono OPENDATASOURCE database_name i schema_name nie może być stosowane do wszystkich źródeł danych i podlega funkcje dostawca OLE DB, który uzyskuje dostęp do obiektu zdalnego. Aby uzyskać więcej informacji zobaczDistributed Queries.

  • [] table_alias
    Jest alias dla table_source mogą być używane dla wygody lub w celu odróżnienia tabela lub w widoku automatycznej-łączyć lub podkwerendy. Alias jest często nazwę skróconą tabela używana do odwoływania się do określonych kolumn w tabelach w łączyć.Jeśli w więcej niż jedną tabela w sprzężeniu, istnieje w tej samej nazwie kolumna SQL Server wymaga się, że nazwę kolumna można kwalifikowaną nazwę tabela, widoku nazwy lub alias. Nie można użyć nazwy tabela, jeśli zdefiniowano alias.

    Po tabela pochodnej zestawu zestaw wierszy lub funkcja zwracająca tabelę, lub klauzula operator (na przykład PIVOT lub UNPIVOT) jest używany, wymagane table_alias na końcu klauzula jest nazwą tabela skojarzone we wszystkich kolumnach, włącznie z kolumn grupowanie, zwracane.

  • WITH (table_hint < >)
    Określa, że optymalizator kwerendy używa do optymalizacji lub strategii blokowania z tej tabela i dla tej instrukcja.Aby uzyskać więcej informacji zobaczWskazówki do tabela (języka Transact-SQL).

  • rowset_function
    Określa jedną z funkcji zestawu zestaw wierszy, takich jak OPENROWSET, która zwraca obiekt, który może być używany zamiast odwołanie tabela.Aby uzyskać więcej informacji o liście funkcji zestawu zestaw wierszy zobacz Rowset Functions (Transact-SQL).

    Za pomocą funkcji OPENROWSET i OPENQUERY do określania obiektu zdalnego zależy od możliwości dostawca OLE DB, który uzyskuje dostęp do obiektu.Aby uzyskać więcej informacji zobaczDistributed Queries.

  • bulk_column_alias
    Jest opcjonalny alias zamienić nazwę kolumna w zestawie wyników.Aliasy kolumna są dozwolone tylko w instrukcji SELECT, że funkcja OPENROWSET za pomocą opcji BULK.Kiedy używać bulk_column_alias, podaj alias dla każdej kolumna tabela w kolejności kolumn w pliku.

    Uwaga

    Ten alias zastępuje atrybut nazwy w elementach kolumna plik formatu XML, jeśli jest obecna.

  • user_defined_function
    Określa funkcja wycenione tabela.

  • OPENXML < openxml_clause >
    Wyświetla zestaw wierszy w dokumencie XML.Aby uzyskać więcej informacji zobaczOPENXML (Transact-SQL).

  • derived_table
    Is a subquery that retrieves rows from the database.derived_table is used as input to the outer query.

    derived_table można użyć Transact-SQL Funkcja konstruktora wartość tabela do określenia wielu wierszy. Na przykład SELECT * FROM (VALUES (1, 2), (3, 4), (5, 6), (7, 8), (9, 10) ) AS MyTable(a, b);. Aby uzyskać więcej informacji zobaczKonstruktor wartość tabela (języka Transact-SQL).

  • column_alias
    Jest to opcjonalne zamienić nazwę kolumna, w wyniku zestaw tabela pochodnej.Zawierają jedną alias kolumna dla każdej kolumna na liście select, a należy umieścić pełną listę aliasów kolumn w nawiasach.

  • <tablesample_clause>
    Określa, że jest zwracana przykładowych danych z tabela.Próbki mogą być niedokładne.Tę klauzulę można użyć w dowolnej tabela podstawowej lub połączonych w instrukcja SELECT, UPDATE lub DELETE.Nie można określić TABLESAMPLE z widokami.Aby uzyskać więcej informacji zobaczLimiting Result Sets by Using TABLESAMPLE.

    Uwaga

    Użyj TABLESAMPLE przed bazy danych, które są uaktualniane do SQL Server, poziom zgodności bazy danych musi być zestaw 90 lub wyższym. Aby ustawić poziom zgodności bazy danych, zobacz ALTER DATABASE poziom zgodności (języka Transact-SQL).

  • SYSTEM
    Jest to zależne wykonania próbkowanie metoda określonej przez normy ISO.W SQL Server, jest to jedyny próbkowanie z dostępnych metod i domyślnie jest stosowane. SYSTEM stosowana metoda próbkowanie opartym strona, w którym jest wybierana losowo zestaw stron z tabela, dla próbkowanie i wszystkie wiersze na tych stronach są zwracane jako podzbiór próbkowanie.Aby uzyskać więcej informacji zobaczLimiting Result Sets by Using TABLESAMPLE.

  • sample_number
    To dokładne lub przybliżonej stała numeryczne wyrażenie reprezentująca procent lub liczbę wierszy.Po określeniu z PERCENT, sample_number Domyślnie jest konwertowany na float wartość; w przeciwnym razie jest konwertowany na bigint. PERCENT jest ustawieniem domyślnym.

  • PROCENT
    Określa, że sample_number procent wierszy w tabela powinny być pobierane z tabela. Jeśli zostanie użyty PERCENT, SQL Server określony zwraca przybliżone o wartość procentową. Jeśli zostanie użyty PERCENT sample_number Wyrażenie musi dawać w wyniku wartość z przedziału od 0 do 100.

  • WIERSZE
    Określa, że około sample_number wierszy, zostaną pobrane. Jeśli określono wiersze SQL Server Zwraca przybliżenie liczba wierszy określona. Po określeniu wiersze sample_number wyrażenie musi być wartością całkowitą większą niż zero.

  • POWTARZALNY
    Wskazuje, że wybrany próbki mogą być zwracane ponownie.Po określeniu o tej samej repeat_seed wartości, SQL Server Zwraca te same podzbiór wierszy, tak długo, jak zostały dokonane nie zmiany do wszystkich wierszy w tabela. Po określeniu z inną repeat_seed wartości, SQL Server prawdopodobnie będzie zwracać niektórych przykładowych różnych wierszy w tabela. Następujące akcje w tabela są uważane za zmiany: Wstaw, Aktualizuj, usunąć, indeksowania odbudowywania lub defragmentacji i przywracanie bazy danych lub Dołącz.

  • repeat_seed
    Is a constant integer expression used by SQL Server to generate a random number.repeat_seed is bigint.Jeśli repeat_seed nie określono, SQL Server powoduje przypisanie wartości losowej. Dla określonego repeat_seed wartość, wynik próbkowanie jest zawsze taki sam, jeśli zmiany nie zostały zastosowane do tabela. The repeat_seed wyrażenie must evaluate to an integer greater than zero.

  • <joined_table>
    Czy zestaw wyników jest iloczyn dwóch lub większej liczby tabel.Sprzężenia wielokrotne używać nawiasów, aby zmienić kolejność fizyczna ze sprzężeń.

  • <join_type>
    Określa typ operacji łączyć.

  • WEWNĘTRZNE
    Określa, zwracane są wszystkie pary pasujących wierszy.Odrzuca Niepasujące wiersze z obu tabel.Po określeniu typu łączyć nie jest to wartość domyślna.

  • PEŁNE [ZEWNĘTRZNĄ]
    Określa wiersz z lewej lub prawej strony tabela, który nie spełnia warunek łączyć jest dostarczany w wyniku ustawienia, a dane wyjściowe kolumny, które odnoszą się do innej tabela są ustawione na wartość NULL.Jest to obok wszystkich wierszy, które zazwyczaj zwracane przez łączyć wewnętrzne.

  • PO LEWEJ STRONIE [ZEWNĘTRZNĄ]
    Określa, że wszystkie wiersze z lewej tabela, nie spełniają warunek łączyć znajdują się w wyniku ustawienia, a dane wyjściowe kolumny z innej tabela są ustawione na wartość NULL w uzupełnieniu do wszystkich wierszy zwracanych przez łączyć wewnętrzne.

  • PO PRAWEJ STRONIE [ZEWNĘTRZNĄ]
    Określa wszystkie wiersze z prawej tabela, które nie spełniają warunków łączyć są uwzględniane zestaw wyników, a kolumny danych wyjściowych, które odnoszą się do innej tabela są ustawione na wartość NULL, oprócz wszystkich wierszy zwracanych przez łączyć wewnętrzne.

  • <join_hint>
    Określa, że SQL Server optymalizator kwerendy za pomocą jedno łączyć Wskazówka lub algorytm wykonanie na określone w klauzula FROM kwerendy łączyć. Aby uzyskać więcej informacji zobaczJoin Hints (Transact-SQL).

  • łączyć
    Wskazuje, że określony łączyć operacji powinny występować między źródeł określonej tabela lub widoku.

  • ON search_condition < >
    Określa warunek, na której oparty jest łączyć.Warunek można określić wszelkie predykat, mimo że kolumny i operatory porównania są często używane, na przykład:

    Gdy stan określa kolumny, w kolumnach nie mają mieć takiej samej nazwie lub ten sam typ danych; jednak jeśli typy danych nie są takie same, muszą być albo zgodne lub które typy SQL Server można niejawnie przekonwertować. Jeśli typy danych nie można niejawnie przekonwertować, warunek musi jawnie przekonwertować typu danych przy użyciu funkcja konwersji.

    Może to być predykatów, które mogą obejmować tylko jeden z połączonych tabel w klauzula ON.Takie predykaty również może być w klauzula WHERE w kwerendzie.Mimo że nie oznacza, że różnica dla sprzężeń INNER położenie takiego predykatów, ich może spowodować, że różne wyniki w przypadku sprzężenia OUTER.Dzieje się tak, ponieważ predykaty w klauzuli ON są stosowane do tabela przed łączyć, dlatego semantycznie stosowana jest klauzula WHERE do wyniku łączyć.

    Aby uzyskać więcej informacji na temat warunków wyszukiwania i predykatów zobacz Search Condition (Transact-SQL).

  • łączyć KRZYŻOWE
    Określa iloczyn krzyżowy z dwóch tabel.Zwraca wiersze taki sam, jakby klauzula WHERE nie została określona w łączyć cyfry, innej niż SQL-92 — reklam.

  • left_table_source{PRZECINAĆ | ZEWNĘTRZNE} ZASTOSOWANIE right_table_source
    Określa, że right_table_source z Zastosuj operator jest obliczane dla każdego wiersza left_table_source. Ta funkcja jest przydatna wtedy, gdy right_table_source zawiera funkcję wycenione tabela, która przyjmuje wartości kolumna z left_table_source jako jeden z jej argumentów.

    Certyfikat KRZYŻOWY lub OUTER musi być określona z Zastosuj.Po określeniu KRZYŻYK wierszy nie są tworzone podczas right_table_source sprawdzana jest zgodność przed określonym wierszu left_table_source i zwraca zestaw wyników puste.

    Po określeniu OUTER produkowany jest jeden wiersz dla każdego wiersza left_table_source nawet wtedy, gdy right_table_source ocenia przed danym wierszu i zwraca zestaw wyników puste.

    Aby uzyskać więcej informacji, zobacz sekcję Spostrzeżenia i Using APPLY.

  • left_table_source
    To urządzenie źródłowe tabela, zgodnie z definicją w poprzednim argumentu.Aby uzyskać więcej informacji zobacz sekcję Spostrzeżenia.

  • right_table_source
    To urządzenie źródłowe tabela, zgodnie z definicją w poprzednim argumentu.Aby uzyskać więcej informacji zobacz sekcję Spostrzeżenia.

  • table_source TABELA PRZESTAWNA <pivot_clause>
    Specifies that the table_source is pivoted based on the pivot_column.table_source is a table or table expression.Dane wyjściowe są tabela zawierającą wszystkie kolumny z table_source z wyjątkiem pivot_column i value_column. The columns of table_source, z wyjątkiem pivot_column i value_column, są nazywane kolumn grupowanie operator przestawne.

    PIVOT wykonuje operację grupowanie w tabela danych wejściowych w odniesieniu do kolumn grupowanie i zwraca jeden wiersz dla każdej grupowanie.Ponadto, dane wyjściowe zawiera jedną kolumna, dla każdej wartości określone w column_list który pojawia się w pivot_column z input_table.

    Aby uzyskać więcej informacji, zobacz sekcję Spostrzeżenia i Using PIVOT and UNPIVOT.

    Uwaga

    Użyj PIVOT przed bazy danych, które są uaktualniane do SQL Server, poziom zgodności bazy danych musi być zestaw 90 lub wyższym. Aby uzyskać więcej informacji na temat ustawiania poziom zgodności bazy danych zobacz ALTER DATABASE poziom zgodności (języka Transact-SQL).

  • aggregate_function
    Jest to system lub zdefiniowane przez użytkownika funkcja agregująca które może zawierać jeden lub więcej danych wejściowych.funkcja agregująca Powinny być niezmienny na wartości null.Funkcja agregująca niezmienny na wartości null nie bierze pod uwagę wartości null w grupie w czasie, gdy jest on oceny wartości agregacja.

    funkcja agregacja Count(*) systemu nie jest dozwolone.

  • value_column
    Jest to wartość kolumna PIVOT podmiotu gospodarczego.W przypadku użycia z UNPIVOT, value_column nie może być nazwa istniejącej kolumna w danych wejściowych table_source.

  • FOR pivot_column
    Is the pivot column of the PIVOT operator.pivot_column must be of a type implicitly or explicitly convertible to nvarchar().Ta kolumna nie może być image lub rowversion.

    Gdy zostanie użyty UNPIVOT, pivot_column jest to nazwa kolumna wyjściowe, która staje się zawężony z table_source. Nie może być istniejącej kolumna w table_source o tej nazwie.

  • IN ( column_list )
    W klauzula PIVOT znajduje się na liście wartości w polach pivot_column które stanie się kolumna nazwy w tabela wyników. Na liście nie można określić wszystkie nazwy kolumn, które już istnieją w danych wejściowych table_source które jest są obracane.

    W klauzula UNPIVOT wymienione w kolumnach table_source który będzie się zawężony w jednym pivot_column.

  • table_alias
    Is the alias name of the output table.pivot_table_alias must be specified.

  • UNPIVOT unpivot_clause < >
    Określa, że tabela wejściowa jest zawężony z wielu kolumn w column_list do jednej kolumna o nazwie pivot_column.

    Aby uzyskać więcej informacji, zobacz sekcję Spostrzeżenia i Using PIVOT and UNPIVOT.

    Uwaga

    Użyj UNPIVOT przed bazy danych, które są uaktualniane do SQL Server, poziom zgodności bazy danych musi być zestaw 90 lub wyższym. Aby ustawić poziom zgodności bazy danych, zobacz ALTER DATABASE poziom zgodności (języka Transact-SQL).

Remarks

Klauzula FROM obsługuje składni języka SQL-SQL-92 połączonych tabel i pochodny tabel.Składnia SQL-92 zapewnia INNER, LEFT OUTER, RIGHT OUTER, FULL OUTER i granic łączyć podmiotów gospodarczych.

UNION i łączyć w klauzula FROM, nie są obsługiwane w widokach i w tabelach pochodnych i podkwerend.

Samodzielnie-łączyć jest tabelą, która jest ed łączyć do samego siebie.Wstawić lub zaktualizować operacje, które są oparte na samosprzężenie postępuj zgodnie z zamówienia w klauzula FROM.

Earlier versions of SQL Server support the definition of outer joins that use the *= and =* operators in the WHERE clause.SQL Server version 7.0 supports the ISO standard.Dzięki temu podmioty łączyć w klauzula FROM.Gdy poziom zgodności bazy danych jest ustawiony na 90 lub wyższym, operatory łączyć zewnętrzne (* = i = *) nie są obsługiwane.

Ponieważ SQL Server uważa, dystrybucji i Kardynalność statystyk z połączonych serwerów, które umożliwiają statystyk dystrybucji do kolumna, wskazówka REMOTE łączyć nie jest wymagana do wymuszenia zdalnie oceny łączyć. The SQL Server query processor considers remote statistics and determines whether a remote-łączyć strategy is appropriate. Wskazówka REMOTE łączyć jest przydatne dla dostawców, którzy nie dostarczają statystyk dystrybucji kolumna.Aby uzyskać więcej informacji zobaczDistribution Statistics Requirements for OLE DB Providers.

Aby uzyskać więcej informacji na temat pracy z sprzężenia zobacz Join Fundamentals i Za pomocą sprzężeń.

Za pomocą Zastosuj

Oba argumenty lewe i prawe operator Zastosuj są wyrażenia tabela.Główna różnica pomiędzy tych argumentów jest right_table_source można użyć funkcja zwracająca tabelę pobierająca kolumna z left_table_source jako jeden z argumentów funkcja. The left_table_source can include tabela-valued functions, but it cannot contain arguments that are columns from the right_table_source.

Operator Zastosuj działa w następujący sposób do wyprodukowania urządzenie źródłowe tabela w klauzula FROM:

  1. Wynikiem jest right_table_source dla każdego wiersza left_table_source do utworzenia zestawów wierszy.

    The values in the right_table_source depend on left_table_source.right_table_source can be represented approximately this way: TVF(left_table_source.row), gdzie TVF jest funkcja zwracająca tabelę.

  2. Łączy wynik określa, które są tworzone dla każdego wiersza w ocenie right_table_source z left_table_source za pomocą operacji UNION ALL.

    Lista kolumn wyprodukowane przez wynik operator Zastosuj jest zestaw kolumn z left_table_source które jest połączone z listy kolumn z right_table_source.

Za pomocą PIVOT i UNPIVOT

The pivot_column and value_column are grupowanie columns that are used by the PIVOT operator. PIVOT w następujący sposób uzyskać zestaw wyników dane wyjściowe są następujące:

  1. Wykonuje GROUP BY na jego input_table według kolumn grupowanie i tworzy wyjściowe jeden wiersz dla każdej grupowanie.

    Kolumn grupowanie w wierszu danych wyjściowych uzyskać od odpowiednich wartości kolumna dla tej grupowanie w input_table.

  2. Generuje wartości dla kolumn na liście kolumn dla każdego wiersza danych wyjściowych, wykonując następujące czynności:

    1. Ponadto grupowanie wierszy wygenerowanych w GROUP BY w poprzednim kroku przed pivot_column.

      Dla każdej kolumna wyjściowe column_list, wybierając podgrupy, który jest zgodny z warunkiem:

      pivot_column = CONVERT(<data type of pivot_column>, 'output_column')

    2. aggregate_function sprawdzana jest zgodność przed value_column w tym podgrupy i jej wyniku są zwracane w postaci wartości odpowiednich output_column. Jeśli jest pusta, podgrupy SQL Server generuje wartość null dla tej output_column. Funkcja agregacja jest COUNT podgrupy jest pusta, zwracana jest wartość zero (0).

Aby uzyskać więcej informacji zobacz Using PIVOT and UNPIVOT.

Uprawnienia

Wymaga uprawnień do instrukcja DELETE, SELECT lub UPDATE.

Przykłady

A.Za pomocą prostej FROM

Poniższy przykład pobiera TerritoryID i Name kolumny z SalesTerritory Tabela w AdventureWorks Przykładowa baza danych.

Here is the result set.

TerritoryID Name                          
----------- ------------------------------
1           Northwest                     
2           Northeast                     
3           Central                       
4           Southwest                     
5           Southeast                     
6           Canada                        
7           France                        
8           Germany                       
9           Australia                     
10          United Kingdom                
(10 row(s) affected)

B.Za pomocą TABLOCK i HOLDLOCK wskazówek dotyczących optymalizacji

Następujących transakcji częściowe pokazuje, jak umieszczenie blokada jawne tabela udostępnionego na Employee i sposób odczytywania indeksu. Blokada jest przechowywana w całej transakcji.

C.Za pomocą składni SQL-92 CROSS łączyć

W poniższym przykładzie zwraca iloczyn krzyżowy z dwóch tabel Employee i Department. Lista wszystkich możliwych kombinacji EmployeeID wiersze i wszystkie Department zwracane są nazwy wierszy.

D.Za pomocą składni SQL-92 pełne łączyć zewnętrzne

W poniższym przykładzie zwraca nazwę produktu i odpowiednich zamówień sprzedaży, w SalesOrderDetail Tabela. Zwraca również zamówień sprzedaży, których nie produktu wymienionego w Product Tabela i produktów z zamówieniem sprzedaży innego niż ten, na liście Product Tabela.

E.Za pomocą składni SQL-92 LEFT łączyć zewnętrzne

W poniższym przykładzie łączy dwie tabele na ProductID i zachowuje Niepasujące wiersze z lewej tabela. The Product tabela is matched with the SalesOrderDetail tabela on the ProductID columns in each tabela. Wszystkie produkty zamówione i nie zamówione, pojawiają się zestaw wyników.

F.Za pomocą składni SQL-92 łączyć wewnętrzne

W poniższym przykładzie są zwracane wszystkie nazwy produktu i identyfikatory zamówienia sprzedaży.

G.Za pomocą składni SQL-92 RIGHT łączyć zewnętrzne

W poniższym przykładzie łączy dwie tabele na TerritoryID i zachowuje Niepasujące wiersze z prawej tabela. The SalesTerritory tabela is matched with the SalesPerson tabela on the TerritoryID kolumna in each tabela. Niezależnie od tego, czy są one przypisywane obszaru wszystkich sprzedawców pojawiają się zestaw wyników.

H.Za pomocą wskazówki łączyć HASH i korespondencji SERYJNEJ

W następującym przykładzie wykonywana łączyć tabela trzy między Product, ProductVendor, a Vendor tabele do utworzenia listy produktów i ich dostawców. łączyć optymalizator kwerendy Product i ProductVendor (p i pv) za pomocą łączyć korespondencji SERYJNEJ. Następny, wyniki Product i ProductVendor Scalanie łączyć)p i pv) HASH przyłączone do Vendor Tabela do wyprodukowania)p i pv) i v.

Important noteImportant Note:

Po sprzężeniu wskazówka jest określony, słowa kluczowego INNER już jest opcjonalny i musi być jawnie podane dla łączyć wewnętrzne do wykonania.

I.Za pomocą tabela pochodnej

W poniższym przykładzie użyto tabela pochodnej SELECT Instrukcja po FROM Klauzula zwrócić imienia i nazwiska wszystkich pracowników i miast, są aktywne.

J.Za pomocą TABLESAMPLE odczytać danych z przykładowej wierszy w tabela

W poniższym przykładzie użyto TABLESAMPLE w FROM Klauzula do zwracają w przybliżeniu 10 procent wierszy w Customer Tabela w AdventureWorks Baza danych.

K.Za pomocą Zastosuj

W poniższym przykładzie założono, że w poniższych tabelach z następującym schematem istnieje w bazie danych:

  • Departments: DeptID, DivisionID, DeptName, DeptMgrID

  • EmpMgr: MgrID, EmpID

  • Employees: EmpID, EmpLastName, EmpFirstName, EmpSalary

Dostępna jest również funkcją wycenione tabela GetReports(MgrID) które zwraca listę wszystkich pracowników)EmpID, EmpLastName, EmpSalary), raport bezpośrednio lub pośrednio na określony MgrID.

W przykładzie użyto APPLY Aby przywrócić wszystkie działy i wszystkim pracownikom tego działu. Jeśli danego działu nie ma żadnych pracowników, będą się wszystkie wiersze zwracana dla tego departamentu.

SELECT DeptID, DeptName, DeptMgrID, EmpID, EmpLastName, EmpSalary
FROM Departments d CROSS APPLY dbo.GetReports(d.DeptMgrID) ;

Jeśli chcesz, aby kwerendy, aby utworzyć wiersze dla tych działów bez pracowników, wytwarzające wartości null dla EmpID, EmpLastName i EmpSalary kolumny, należy użyć OUTER APPLY w zamian.

SELECT DeptID, DeptName, DeptMgrID, EmpID, EmpLastName, EmpSalary
FROM Departments d OUTER APPLY dbo.GetReports(d.DeptMgrID) ;

L.Za pomocą PIVOT i UNPIVOT

W poniższym przykładzie zwraca liczbę zamówień zakupu, wprowadzane przez identyfikatory pracowników 164, 198, 223, 231, a 233, według identyfikatora dostawcy.

W tym polu jest zestaw wyników częściowych:

VendorID Emp1 Emp2 Emp3 Emp4 Emp5

----------------------------------------------------------------

1           4           3           5           4           4

2           4           1           5           5           5

3           4           3           5           4           4

4           4           2           5           5           4

5           5           1           5           5           5

Aby unpivot w tabela, założono, zestaw wyników, produkowane w poprzednim przykładzie jest przechowywana jako pvt. Kwerendy wygląda następująco.

W tym polu jest zestaw wyników częściowych:

Pracownik VendorID zamówienia

------------------------------

1 4 Emp1

1 3 Emp2

1 5 Emp3

1 4 Emp4

1 4 Emp5

2 4 Emp1

2           Emp2        1

2 5 Emp3

2 5 Emp4

2 5 Emp5