with...as ...语句用于将查询语句定义为某个名称,并可以再后续的查询块中引用。当查询名称与已有的表名重复时,with定义的查询块优先级高。with语句可以定义多个查询,中间使用逗号分隔。常用于定于需要反复查询某些表的视图中,使用with语句把需要查询的表定义为查询快再使用比直接在视图中反复的查询表效率要高一些。个人觉得with..as..的作用是把会反复使用的表字段在查询块中预先查询出来,为这个查询块定义一个名称,作用类似于一个临时表。
例子:
createorreplaceviewtest_with_as as --定义with..as..查询块 with dept_infoas (selectdept_name,dept_idfromdept),employee_infoas (selectemployee_name,employee_id,dept_id,salaryfromemployee) --调用with..as..中的查询块 selectd.*,t.*fromdept_infodinnerjoinemployee_infoeond.dept_id=e.dept_id;