SQL Server中使用with子句有什么用处

时间:2013-07-02 07:10:40

标签: sql-server

请有人帮我理解WITH子句的使用

WITH T(Id) AS 
(SELECT DISTINCT 
     [IO].[IncidentQuestionId] 
 FROM 
     [dbo].[IncidentValue] AS IV 
 INNER JOIN 
     [dbo].[IncidentOption] AS [IO] ON [IV].[IncidentOptionId] = [IO].[Id]
 WHERE 
     [IV].[IncidentId] = 45
) 
SELECT 
    IQ.*, IC.[Name] AS [IncidentCategory] 
FROM  
    IncidentQuestion] AS IQ 
INNER JOIN 
     T ON [T].[Id] = IQ.[Id] 
INNER JOIN 
     [dbo].[IncidentCategory] AS IC ON IQ.[IncidentCategoryId] = IC.[Id] 
WHERE 
     IQ. [IsOption] = 0 
ORDER BY 
     IC.[OrderId] ASC, IQ.[OrderId] ASC

我上面的查询使用了with子句但我不知道使用with子句。

感谢名单

3 个答案:

答案 0 :(得分:2)

这是Common Table Expressions的语法。阅读文档Using Common Table Expressions

答案 1 :(得分:2)

它用于创建Common Table Expression,它返回SELECT语句的结果,然后可以在另一个SQL语句中使用。 我使用它们来生成更好的可读SQL代码。

答案 2 :(得分:0)

有时,WITH子句用于强制查询使用索引。