with外面再套一层with

image.png这是SQL由于需要将一对多的值,把多的值合并成一个字段,现在已经完成了第一个合并,这个sql还需要在关联一个一对多的表,如何再套一个with呢?我再套一个with之后就报错了

image.png

无为而无不为 发布于 2021-6-28 15:30 (编辑于 2021-6-28 16:16)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
luojian0323Lv7资深互助
发布于2021-6-28 15:32

with 不能套with

把主要的sql 用with

然后用这个主表关联查询其他表

  • 无为而无不为 无为而无不为(提问者) 只能用一次吗
    2021-06-28 15:34 
  • luojian0323 luojian0323 回复 无为而无不为(提问者) 如多个表需要with as 可以 with a as(你的sql),b as(你的sql) 然后再 select 查询上述两表 如果a 和b 有关联查询,不适合写两个with as 应该先关联
    2021-06-28 15:35 
  • 无为而无不为 无为而无不为(提问者) 回复 luojian0323 写两个个with呢? with a as() with b as() select a.字段,b.字段 from a
    2021-06-28 16:29 
最佳回答
0
熊猫头Lv6初级互助
发布于2021-6-28 15:32

把with tlb as删了

最佳回答
0
xiaomingyiLv6中级互助
发布于2021-6-28 15:33(编辑于 2021-6-28 15:33)

正确的写法应该是:

with A as (select * from table)

,B as (select * from A)

select * from B

  • 无为而无不为 无为而无不为(提问者) 只能用一次?
    2021-06-28 15:34 
  • xiaomingyi xiaomingyi 回复 无为而无不为(提问者) 后面可以一直引用
    2021-06-28 15:35 
  • xiaomingyi xiaomingyi 回复 无为而无不为(提问者) 假如说后面B要关联A,就写成 select * from A left join B on (....)
    2021-06-28 15:35 
  • 无为而无不为 无为而无不为(提问者) 回复 xiaomingyi 写两个个with呢? with a as() with b as() select a.字段,b.字段 from a
    2021-06-28 16:29 
  • xiaomingyi xiaomingyi 回复 无为而无不为(提问者) 后面的with as的with写成,就可以了,不需要再声明了,with a as() ,b as() select a.字段,b.字段 from a
    2021-06-28 16:35 
最佳回答
0
用户R1001426Lv6见习互助
发布于2021-6-28 15:37

没有这种语法,子查询嵌套可以这样写

With a as (Select ... From ...),

b as (Select ... From a),

c as (Select ... From b)

Select ... From c

  • 5关注人数
  • 586浏览人数
  • 最后回答于:2021-6-28 16:16
    请选择关闭问题的原因
    确定 取消
    返回顶部