有一张学生表student,包括学生id,姓名,年龄,班级,分数字段。
--用with子句得到成年且成绩及格的学生名单
with adult as (
select stu_id
from student
where age >=18
),
pass_stu as (
select stu_id
from student
where grade >=60
)
select a.stu_id, age, grade
from student as a
join adult as b on (a.stu_id = b.stu_id)
join pass_stu as c on (a.stu_id = c.stu_id)
上述例子的问题很简单,完全可以用where子句完成,举这个例子只是为了展示一下with子句的用法。
当数据来自很多张不同的表格时,把各个指标分在不同的WITH子表中,最后再通过关键字段连接起来是非常方便的。