公用表表达式(CTE,Common table expression)是和派生表很相似的另一种形式的表表达式,而且具有一些重要优势。CTE 是在 SQL Server 2005 中引入的,是ANSI SQL (1999及以后版本)标准的一部分。
例:
WITH USACusts AS
(
SELECT custid,companyname
FROM dbo.Customers
WHERE country=N'USA'
)
SELECT * FROM USACusts;
和派生表一样,一旦外部查询完成,CTE的生命期也就结束了。
注意:T-SQL 中使用的WITH子句有几种不同的目的。为避免歧义,当用WITH子句定义CTE时,同一代码段中前面的语句(如果存在)必须用分号结束。虽然真的很奇怪,整个CTE语句的分号不是必需的,但还是建议明确指定该分号。