暂无图片
SQL相同的两个子查询如何复用?
我来答
分享
暂无图片 匿名用户
SQL相同的两个子查询如何复用?
select sc.col1, sc.col2 
    from 
    **(select col1,col from t1)** sc 
            where sc.col1 = (select max(col)
            from 
                **(select col1,col from t1)**);

在sql语句中出现两个一模一样的查询语句,在实际执行的时候会执行两次。如何用一条SQL语句来达到复用的效果,让查询优化器自动复用呢?

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
Kubee

oracle中可以用with as

暂无图片 评论
暂无图片 有用 0
chengang

cte 公用表达式。

sqlite,mysql sql server oracle都支持的。

with cte1 as
(
select col1,col from t1
)

select sc.col1, sc.col2
from
**cte1 ** sc
where sc.col1 = (select max(col)
from
**cte1 **);

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏