SQL中WITH AS 语句可以放到select语句内部吗?下面代码如何修改

select*from(witht_treeas(selectCountryRegionCodefromperson.CountryRegion)select*fromp... select * from (
with
t_tree as
(
select CountryRegionCode from person.CountryRegion
)
select * from person.StateProvince where CountryRegionCode in (select * from t_tree)
) as chaxuuu
展开
 我来答
w29601
推荐于2018-03-20 · 超过14用户采纳过TA的回答
知道答主
回答量:48
采纳率:100%
帮助的人:31万
展开全部

很简单哦,你把WITH AS 这段放到最前面去就可以了,下面的语句可以直接调用的,当然中间不要有分号断开。

with
t_tree as
(
    select CountryRegionCode from person.CountryRegion 
)
select * from (select * from person.StateProvince where CountryRegionCode in (select * from t_tree)
) as chaxuuu
greystar_cn
2015-12-21 · 知道合伙人软件行家
greystar_cn
知道合伙人软件行家
采纳数:16407 获赞数:17260
本人主要从事.NET C#方向的技术开发工作,具有10多年的各类架构开发工作经验。

向TA提问 私信TA
展开全部
很报谦!你的这个需求是无法支持的。因此无法在将其做为子查询来处理
SQL 引擎不支持此种语法,会报错的,如:
关键字 'with' 附近有语法错误。如果此语句是公用表表达式、xmlnamespaces 子句或者更改跟踪上下文子句,那么前一个语句必须以分号结尾。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
中工小熊
推荐于2016-08-14 · 超过26用户采纳过TA的回答
知道答主
回答量:76
采纳率:0%
帮助的人:65.7万
展开全部
with t_tree as (select CountryRegionCode from person.CountryRegion ) select * from person.StateProvince where CountryRegionCode in (select * from t_tree)
为什么不用表连接进行查询呢 用in 严重影响查询效率
select * from c.* from person.StateProvince s,person.CountryRegion c where s.CountryRegionCode=c.CountryRegionCode;
追问
表连接查询比用in查询效率高?是吗?
请优化下面这个查询
with

t_tree1 as (select C from a ),
t_tree2 as (select Cfrom b )
select * from p
where C in (select C from t_tree1) or C in (select C from t_tree2)
追答
以上写法意义不大
优化结果如下:
采用exists

select p.* from a,b,p where a.c=p.c or c.c=p.c
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式