SELECT (Transact-SQL)
從資料庫中擷取資料列,可讓您從一或多份資料表中選取一或多個資料列或資料行。SELECT 陳述式的完整語法很複雜,但主要子句可以摘要如下:
[ WITH <common_table_expression>]
SELECT select_list [ INTO new_table ]
[ FROM table_source ] [ WHERE search_condition ]
[ GROUP BY group_by_expression]
[ HAVING search_condition]
[ ORDER BY order_expression [ ASC | DESC ] ]
您可以在查詢之間使用 UNION、EXCEPT 和 INTERSECT 運算子來比較它們的結果,或將它們的結果結合在單一結果集中。
語法
<SELECT statement> ::=
[WITH <common_table_expression> [,...n]]
<query_expression>
[ ORDER BY { order_by_expression | column_position [ ASC | DESC ] }
[ ,...n ] ]
[ COMPUTE
{ { AVG | COUNT | MAX | MIN | SUM } (expression )} [ ,...n ]
[ BY expression [ ,...n ] ]
]
[ <FOR Clause>]
[ OPTION ( <query_hint> [ ,...n ] ) ]
<query_expression> ::=
{ <query_specification> | ( <query_expression> ) }
[ { UNION [ ALL ] | EXCEPT | INTERSECT }
<query_specification> | ( <query_expression> ) [...n ] ]
<query_specification> ::=
SELECT [ ALL | DISTINCT ]
[TOP ( expression ) [PERCENT] [ WITH TIES ] ]
< select_list >
[ INTO new_table ]
[ FROM { <table_source> } [ ,...n ] ]
[ WHERE <search_condition> ]
[ <GROUP BY> ]
[ HAVING < search_condition > ]
備註
由於 SELECT 陳述式非常複雜,因此,依子句來顯示詳細的語法元素和引數:
SELECT 陳述式中的子句順序很重要。您可以省略任何選擇性的子句,但當使用選擇性的子句時,它們必須以適當的順序顯示。
只有在這些 SELECT 陳述式的選取清單包含指派使用者自訂函數之本機變數值的運算式時,才能在使用者自訂函數中,允許 SELECT 陳述式。
利用 OPENDATASOURCE 函數來建構成伺服器名稱部分的四部分名稱,每當 SELECT 陳述式中出現資料表名稱時,都可用來作為資料表來源。
部分語法限制只適用於牽涉到遠端資料表的 SELECT 陳述式。如需詳細資訊,請參閱<使用分散式查詢的指導方針>。
SELECT 陳述式的處理順序
下列步驟顯示 SELECT 陳述式的處理順序。
FROM
ON
JOIN
WHERE
GROUP BY
WITH CUBE 或 WITH ROLLUP
HAVING
SELECT
DISTINCT
ORDER BY
TOP
權限
需要 sysadmin 固定伺服器角色、db_owner 和 db_datareader 固定資料庫角色中的成員資格,以及資料表的擁有權。sysadmin、db_owner 和 db_securityadmin 角色的成員及資料表擁有者可將權限移轉給其他使用者。