【Mysql数据库基础10】with as临时表

本文介绍了MySQL中withas语句的基本语法,如何创建临时表(公共表表达式),以及它在复杂查询中的应用。同时,对比了withas与视图的区别,强调了withas的临时性和查询性能提升。
摘要由CSDN通过智能技术生成

with as临时表

1 语法

在MySQL中,with as语句通常用于创建临时性的命名查询结果集,也称为公共表表达式(Common Table Expression,CTE)。
通过WITH AS语句,可以在一个查询中定义一个临时的虚拟表,然后在其他部分引用这个表,从而提高查询的可读性和可维护性。

使用WITH AS语句的一般语法结构如下:

WITH 命名表名 AS (
    查询语句
)

SELECT 字段列表
FROM 命名表名
WHERE 条件;

使用WITH AS语句可以使复杂的查询更易于管理和维护,避免重复编写相同的子查询。
此外,WITH AS语句还可以提高查询的性能,因为数据库系统可能会对WITH AS子查询进行优化处理,降低整体查询的成本。

2 例子

牛客上的题目:SQL284 获得积分最多的人(二)

#先创建一个临时表
#查询每个人积分的总和
with t as (
    SELECT user_id,sum(grade_num) as grade_sum 
    from grade_info 
    group by user_id
)

select u.id,u.name,t.grade_sum as grade_num
from t
left join user u on t.user_id = u.id
where t.grade_sum = (
    select max(t.grade_sum)
    from t
);

3 视图

此外,我觉得with as和视图有点像,不过WITH AS创建的临时表仅在当前查询内可见且一次性使用,而视图是存储在数据库中的查询结果,可以被多次查询和引用。
比如:查询姓张的同学的姓名和专业名

create view v1 
as
select stuname,majorname
from stuinfo s
inner join major m
on s.majorid = m.id;

select *
from v1
where stuname like '张%';

具体视图的操作可以看看我之前总结的博客:【Mysql数据库基础08】事务、视图的创建和修改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

失舵之舟-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值