select子查询里面能不能嵌套with as

比如:

select ... from (

with a as (select * from b)

select ... from a

union all

select ... from c

)d

如果不能,那怎么将

with a as (select * from b)

select .... from a

union all

select ... from c

这个查询结果作为嵌套的子查询

image.png

带with的子查询没问题,但是前面再用select后就报错

18328816101 发布于 2019-9-27 16:21 (编辑于 2019-9-27 17:12)
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
5
sayLv6初级互助
发布于2019-9-29 14:23

sql sever 好像不行,你试一下用两个with as 查询:

with a as (select * from b),

c as (select * from d) 

select * from a join c on a.col=c.col 

https://blog.csdn.net/smartsmile2012/article/details/53260752你看一下这个博文,看看对你是否有帮助


  • 18328816101 18328816101(提问者) 感谢,with as嵌套用不了,已经用复杂语句替代了,with as的连用会
    2019-09-30 15:52 
最佳回答
0
黄源Lv6中级互助
发布于2019-9-27 16:36(编辑于 2019-9-27 16:37)

可以

select * from (


with a as (select 1 from dual)


select * from a


union all


select 2 from dual


)d


最佳回答
0
天狮座Lv6初级互助
发布于2019-9-27 16:40

你直接

with tempName as (select ....)  select * from tempName

就行了,目前这种用法支持hana,oracle,sqlserver,不支持mysql

  • 18328816101 18328816101(提问者) 我的问题是将你写的这个结果作为嵌套的子查询会出问题,你看看我发的图片
    2019-09-27 17:14 
  • 天狮座 天狮座 回复 18328816101(提问者) 尽量用我说的这种通用做法,这个在sqlserver好像不支持这个骚操作
    2019-09-27 18:35 
最佳回答
0
Kevin-sLv7中级互助
发布于2019-9-27 17:17

你是oracle的么,oracle的没有问题

  • 5关注人数
  • 1113浏览人数
  • 最后回答于:2019-9-29 14:23
    请选择关闭问题的原因
    确定 取消
    返回顶部