mssql 语句有问题,请帮忙看下
select  top  10 id   from [Product] where 1=1   and language=0 and lockid<>1   and  typeid in( 
with b as(
select id,name,parentid from ProductSort 
where id=12 
union all select x.id,x.name,x.parentid from ProductSort x,b 
where x.parentid=b.id 
)select id from b  
) order  by sortid asc , id  desc
---这种执行就有错
with b as(select id,name,parentid from ProductSort 
where id=12 
union all select x.id,x.name,x.parentid from ProductSort x,b 
where x.parentid=b.id 
)select id from b  
---上面单独执行就没错
select  top  10 id   from [Product] where 1=1   and language=0 and lockid<>1   and  
typeid in( 
12
) order  by sortid asc , id  desc
---上面单独执行也没错
为上面合到一起就会出错
              
------解决方案--------------------;with b as(
select id,name,parentid from ProductSort 
where id=12 
union all select x.id,x.name,x.parentid from ProductSort x,b 
where x.parentid=b.id 
)
select  top  10 id   from [Product] where 1=1   and language=0 and lockid<>1   and  typeid in( 
select id from b  
) order  by sortid asc , id  desc
------解决方案--------------------select  top  10 id   
from [Product] 
where 1=1   and language=0 and lockid<>1   and  typeid in
	(select id from (
		select id,name,parentid from ProductSort 
		where id=12 
		union all select x.id,x.name,x.parentid from ProductSort x,b 
		where x.parentid=b.id 
		)t   -->要有这个别名t
	) 
order  by sortid asc , id  desc
你的where 里面不能用with,还有两条语句连接查询后要有别名