数据库With用法

文摘   2024-09-13 08:02   上海  

前言


面试官:你知道mysql,with是怎么用的吗

面试者一脸懵逼说:with?。。这我不怎么了解过。

面试官:好的,那你等面试结果吧。

                            





正文

With,大概的意思就是建一张临时表 给你当次的执行sql 去执行语句。

举个例子:

with tablea as ( select * from student )

Select * from tablea;

那这tablea拿到的结果就是student表拿到的结果,也就是括号内select * from student的结果。

那意思大家都懂了之后,什么场景可以去使用这种写法呢。

比如说大家经常使用的inner join 进行关联表,那有的时候,你关联的表是比较复杂的。

举个例子

Select * from student  a

Inner join

Project  b

On  a.projectid =b.projectid

这是比较正常的语句,那如果project是一个比较复杂的情况,你不能仅仅去关联project去,要经过很多的筛选等等。那我们就可以用with的语法去写,这样子更加简单明了。

With projecttable as 

(Select max_by(projectid,time) projectid,

min_by(projectname,time) projectname 

from project 

Where time >=2023-01-01  

group by project group )

-- 假设就是这种复杂奇葩的逻辑的sql

Select * from student  a

Inner join

projecttable  b

On  a.projectid =b.projectid

那这样子就很简单清晰,如果想改projecttable ,那就直接去改with语句中的sql就可以了。如果你的逻辑很简单,那就不用写with,写with 可以应对一些比较复杂的情况,避免你直接写在sql里面,会非常的不直观,难以维护。


Java面试教程
Java面试题、Java教程、Java培训、Java学习、Java开发、Java基础、Java入门,关于Java的一切。
 最新文章