在SQLServer2005中使用带while循环的CTE

在SQLServer2005中使用带while循环的CTE,sql,sql-server,Sql,Sql Server,我想在while循环中使用CTE。可能吗 我的代码: ; with myCTE(a,b) ( select .,. from abc ) while exist (select * from mycet) -- causing issue 请提出一些解决办法 问候,, Anuprita不,声明: CTE后面必须有一个SELECT、INSERT、UPDATE或DELETE 引用部分或所有CTE列的语句 但无论如何,您应该使用基于集合的方法,而不是循环。除此之外,还不清楚您的查询应该返回什么。不

我想在while循环中使用CTE。可能吗

我的代码:

; with myCTE(a,b)
(
 select .,. from abc
)
while exist (select * from mycet) -- causing issue
请提出一些解决办法

问候,, Anuprita不,声明:

CTE后面必须有一个SELECT、INSERT、UPDATE或DELETE 引用部分或所有CTE列的语句


但无论如何,您应该使用基于集合的方法,而不是循环。除此之外,还不清楚您的查询应该返回什么。

不确定您想做什么,但是,while循环不是正确的思考方式。SQL是基于集合的langauge.SQL Server(标题)还是MySQL(标记)?对于SQL Server,无法组合这些功能。只需将CTE移动到派生表中即可。但是,它必须为每次迭代重新运行查询。我会尽量避免循环,如果不能,我会将结果存储在一个表变量中并循环:可以从CTE填充一个临时表,然后将临时表用于循环,请参见SQLFIDLE中的示例。