Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:Endpoint di analisi SQL in Microsoft Fabric e Warehouse in Microsoft Fabric
In Transact-SQL, una query può partire dalla FROM clausola e posizionarla SELECT dopo le sorgenti della tabella. Questa FROMsintassi -first stabilisce le tabelle e le colonne disponibili prima di definire la proiezione.
La clausola di SELECT fine è opzionale. Se ometti SELECT, la query si comporta come se avessi specificato SELECT *.
Le seguenti affermazioni sono equivalenti:
FROM dbo.Employee;
FROM dbo.Employee
SELECT *;
FROM-First la sintassi non cambia i risultati delle query o il comportamento dell'esecuzione. Fornisce un altro modo per creare una query preservando la semantica di una sentenza -first equivalente SELECT.
FROMla sintassi -first utilizza la grammatica sorgente di tabelle supportata da Fabric Data Warehouse e dall'endpoint SQL analytics.
Convenzioni relative alla sintassi Transact-SQL
Syntax
FROM { <table_source> [ ,...n ] }
[ SELECT <select_list> ]
[ WHERE <search_condition> ]
[ GROUP BY <group_by_expression> [ ,...n ] ]
[ HAVING <search_condition> ]
[ WINDOW <window_definition> [ ,...n ] ]
[ QUALIFY <search_condition> ]
[ ORDER BY <order_by_expression> [ ASC | DESC ] [ ,...n ] ]
[ FOR <JSON> ]
<table_source> ::=
{
[ database_name . [ schema_name ] . | schema_name . ]
table_or_view_name [ [ AS ] table_alias ]
| built_in_table_valued_function [ [ AS ] table_alias ]
[ ( column_alias [ ,...n ] ) ]
| user_defined_table_valued_function [ [ AS ] table_alias ]
[ ( column_alias [ ,...n ] ) ]
| derived_table [ [ AS ] table_alias ] [ ( column_alias [ ,...n ] ) ]
| <joined_table>
| <apply>
| <pivoted_table>
| <unpivoted_table>
}
Arguments
<table_source>
Specifica una tabella, una vista, una funzione integrata a valori di tabella, una funzione a valori di tabella definita dall'utente, una tabella derivata, una tabella giunta, una tabella pivotata o una tabella non pivotata, con o senza alias. Più sorgenti di tabella possono essere unite o separate da virgole.
L'ordine delle sorgenti della tabella dopo la FROM parola chiave non influisce sul set dei risultati. I nomi duplicati nella FROM clausola producono un errore. I nomi di colonne duplicati non qualificati possono richiedere la qualificazione di tabella o alias.
Le query che fanno riferimento a molte fonti di tabella possono richiedere più tempo di compilazione e ottimizzazione. Il numero pratico di sorgenti di tabella dipende dalle risorse disponibili e dalla complessità delle query.
table_or_view_name
Nome di una tabella o di una vista. Usa un nome completamente qualificato nel database dei moduli. schema. object_name quando fai riferimento a un oggetto in un altro database sullo stesso endpoint SQL.
[AS] table_alias
Un alias per una sorgente di tabella. Usa un alias per comodità o per distinguere le fonti tra join, auto-join e sottoquery. Dopo aver definito un alias, usa l'alias invece del nome originale della tabella per qualificare le colonne. Tabelle derivate, funzioni a valori di tabella, PIVOT, e UNPIVOT possono richiedere un alias.
built_in_table_valued_function
Specifica una funzione integrata che restituisce un set di righe. Le funzioni supportate a valori di tabella includono, ma non sono limitate a:
-
OPENJSON, che converte il testo JSON in righe e colonne. -
OPENROWSET(BULK...), che legge file esterni e restituisce il loro contenuto come righe. -
STRING_SPLIT, che divide una stringa delimitata in righe. -
GENERATE_SERIES, che genera una serie numerica. -
sys.fn_helpcollations, che restituisce le collazioni supportate dal motore SQL.
Le funzioni integrate con valori di tabella possono definire il proprio argomento e la sintassi della colonna di output. Ad esempio, OPENJSON può includere una WITH clausola che definisce le colonne restituite.
user_defined_table_valued_function
Specifica una funzione a valori di tabella definita dall'utente. Per sintassi e comportamento, vedi CREATE FUNCTION (Microsoft Fabric, Azure Synapse Analytics).
derived_table
Una sottoquery che restituisce righe e agisce come input per la query esterna. Una tabella derivata richiede un alias di tabella. Un costruttore di valore di tabella può anche definire una tabella derivata.
column_alias
Un alias opzionale che sostituisce il nome di una colonna nel risultato di una tabella derivata o di una funzione a valori di tabella. Se specifichi una lista di alias di colonna, fornisci un alias per ogni colonna di output.
<joined_table>
Specifica una sorgente di tabella prodotta unendo due o più sorgenti di tabella. Per la sintassi e il comportamento completi dei join, vedi la clausola FROM più JOIN, APPLY, PIVOT (Transact-SQL) e Joins.
Per opzioni supportate per ottimizzatori e movimenti dati, vedi Join hints (Transact-SQL).
<Applica>
Specifica una CROSS APPLY sorgente di tabella o OUTER APPLY opzione. Per la sua sintassi completa e il suo comportamento, vedi Use APPLY.
<pivoted_table>
Specifica una sorgente di tabella trasformata dall'operatore PIVOT . Per la sua sintassi completa e il suo comportamento, vedi Uso di PIVOT e UNPIVOT.
<unpivoted_table>
Specifica una sorgente di tabella trasformata dall'operatore UNPIVOT . Per la sua sintassi completa e il suo comportamento, vedi Uso di PIVOT e UNPIVOT.
SELEZIONA <select_list>
Con FROMla sintassi -first, la SELECT clausola è opzionale.
SELECT specifica le colonne e le espressioni restituite dalla query. Per la sintassi completa della proiezione, vedi clausola SELECT (Transact-SQL).
Quando presente, la SELECT clausola deve apparire immediatamente dopo tutte le sorgenti della tabella, le join e APPLY gli operatori. Se ometti la SELECT clausola, <select_list> di default si chiama *.
PER <JSON>
Specifica la formattazione JSON per il risultato della query. Per la sua sintassi e comportamento completi, vedi clausola FOR (Transact-SQL).
Osservazioni:
-
SELECT-first eFROM-first sono entrambe supportate, ma non puoi combinarle nello stesso blocco di query. - Nella
FROMsintassi -first, posizionareSELECTimmediatamente dopo l'espressione completa della sorgente della tabella, includendo eventuali joins,APPLY,PIVOT, oUNPIVOToperatori. - Un blocco di query può contenere solo una
FROMclausola e una clausolaSELECTdi fine opzione opzionale. - Omettere
SELECTnon bypassa le restrizioni esistenti suSELECT *, incluse le restrizioni negli oggetti legati allo schema. -
FROMLa sintassi -first può essere utilizzata in query di alto livello, espressioni di tabella comune (CTE), sottoquery, viste, funzioni a valori di tabella inline e moduli di query supportatiINSERT. -
FROM-prima sintassi non introduce una nuovaSELECT INTOforma. -
FROM-first e equivalenteSELECT-first query restituiscono lo stesso risultato e hanno lo stesso comportamento in runtime.
Supporto della piattaforma
Sia FROMla sintassi delle query -first che SELECTquella -first sono supportate in Fabric Data Warehouse e nell'endpoint SQL analytics.
FROMLa sintassi della prima query non è supportata in SQL Server, database SQL di Azure, Istanza gestita di SQL di Azure o database SQL in Fabric.
Examples
A. Specifica SELECT dopo FROM
Il seguente esempio dichiara la sorgente della tabella prima delle colonne proiettate:
FROM dbo.Employee AS e
SELECT e.empId, e.name, e.dept;
Questa query equivale a:
SELECT e.empId, e.name, e.dept
FROM dbo.Employee AS e;
B. Ometti SELECT
La seguente query omette la clausola di termine SELECT :
FROM dbo.Employee;
La query è equivalente a:
SELECT *
FROM dbo.Employee;
C. Filtra e raggruppa una FROMquery -first
Il seguente esempio dichiara la sorgente, specifica la proiezione e poi filtra e raggruppa le righe:
FROM dbo.Employee AS e
SELECT e.dept, COUNT(*) AS EmployeeCount
WHERE e.managerId IS NOT NULL
GROUP BY e.dept;
D. Usa i join prima di SELECT
La clausola di SELECT fine appare dopo tutte le sorgenti della tabella e le condizioni di join:
FROM Sales.SalesOrderHeader AS soh
INNER JOIN Sales.SalesOrderDetail AS sod
ON soh.SalesOrderID = sod.SalesOrderID
SELECT
soh.SalesOrderID,
soh.OrderDate,
sod.ProductID,
sod.LineTotal;
E. Usa FROMla sintassi -first in un CTE
Il seguente esempio definisce e consuma una CTE con FROMblocchi di query -first:
WITH managers AS (
FROM dbo.Employee
SELECT empId, name, dept
WHERE managerId IS NOT NULL
)
FROM managers
SELECT empId, name, dept;
F. Usa FROMla sintassi -first in una sottoquery EXISTS
Il seguente esempio utilizza FROMla sintassi -first sia nella query esterna che nella sottoquery correlata:
FROM dbo.Employee AS e
SELECT e.empId, e.name, e.dept
WHERE EXISTS (
FROM dbo.Employee AS e2
WHERE e2.dept = e.dept
AND e2.empId <> e.empId
);
L'omesso SELECT nella EXISTS sottoquery è predefinito .SELECT * Il EXISTS predicato verifica solo se la sottoquery restituisce una riga.
G. Usa FROMla sintassi -first con INSERT
Il seguente esempio inserisce righe restituite da una FROMquery -first:
INSERT INTO dbo.EmployeeArchive
FROM dbo.Employee
SELECT empId, name, dept
WHERE dept = 'Accounting';