SQL语句 with as 用法

这篇具有很好参考价值的文章主要介绍了SQL语句 with as 用法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

WITH  AS短语,也叫做子查询部分(subquery factoring),是用来定义一个SQL片断,该SQL片断会被整个SQL语句所用到。这个语句算是公用表表达式(CTE)。

 比如

 with A as (select * from class)

    select *from A  

这个语句的意思就是,先执行select * from class   得到一个结果,将这个结果记录为A  ,在执行select *from A  语句。A 表只是一个别名。

也就是将重复用到的大批量 的SQL语句,放到with  as 中,加一个别名,在后面用到的时候就可以直接用。

对于大批量的SQL数据,起到优化的作用。

二、with的相关总结
1.使用with子句可以让子查询重用相同的with查询块,通过select调用(with子句只能被select查询块引用),一般在with查询用到多次情况下。在引用的select语句之前定义,同级只能定义with关键字只能使用一次,多个用逗号分割。
2.with子句的返回结果存到用户的临时表空间中,只做一次查询,反复使用,提高效率。
3.在同级select前有多个查询定义的时候,第1个用with,后面的不用with,并且用逗号隔开。
4.最后一个with 子句与下面的查询之间不能有逗号,只通过右括号分割,with 子句的查询必须用括号括起来
5.如果定义了with子句,而在查询中不使用,那么会报ora-32035 错误:未引用在with子句中定义的查询名。(至少一个with查询的name未被引用,解决方法是移除未被引用的with查询),注意:只要后面有引用的就可以,不一定非要在主查询中引用,比如后面的with查询也引用了,也是可以的。
6.前面的with子句定义的查询在后面的with子句中可以使用。但是一个with子句内部不能嵌套with子句。
7.当一个查询块名字和一个表名或其他的对象相同时,解析器从内向外搜索,优先使用子查询块名字。
8.with查询的结果列有别名,引用的时候必须使用别名或*。
 


 文章来源地址https://www.toymoban.com/news/detail-630335.html

到了这里,关于SQL语句 with as 用法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【SQL中with的用法及代码经验分享】

    提示:这里可以添加本文要记录的大概内容: 注:WITH AS短语,也叫做子查询部分,可以称为独立查询模块,即定义一个SQL的独立模块后,该SQL模块可以被整个SQL语句所用到。有的时候,with as是为了提高SQL语句的可读性,减少关联太多表产生的冗余。 提示:以下是本篇文章正

    2024年02月05日
    浏览(31)
  • SQL group by、where和having语句用法

    SQL 语句中的 GROUP BY 子句用于将具有相同值的行分组在一起,通常与聚合函数(如 COUNT、SUM、AVG 等)一起使用。WHERE 子句用于筛选符合条件的行。HAVING 子句则在分组后对分组结果进行进一步筛选。 以下是一个使用 SQL 语句中的 GROUP BY、WHERE 和 HAVING 子句的示例: 在这个示例中

    2024年02月07日
    浏览(47)
  • SQL语句中删除表数据drop、truncate和delete的用法

    一、SQL中的语法 1、drop table 表名称 eg: drop table dbo.Sys_Test 2、truncate table 表名称 eg: truncate table dbo.Sys_Test 3、delete from 表名称 where 列名称 = 值 eg: delete from dbo.Sys_Test where test=\\\'test\\\' 二、drop,truncate,delete区别 1、drop (删除表):删除内容和定义,释放空间。简单来说就是把整个表去

    2024年02月05日
    浏览(82)
  • SQL语句错误this is incompatible with sql_mode=only_full_group_by解决方法

    一、原理层面 这个错误发生在mysql 5.7.5 版本及以上版本会出现的问题: mysql 5.7.5版本以上默认的sql配置是:sql_mode=“ONLY_FULL_GROUP_BY”,这个配置严格执行了\\\"SQL92标准\\\"。 很多从5.6升级到5.7时,为了语法兼容,大部分都会选择调整sql_mode,使其保持跟5.6一致,为了尽量兼容程序。

    2024年01月21日
    浏览(38)
  • MySQL中WITH AS语句的使用

    WITH 子句,也称为 Common Table Expressions(CTE),是一种在 SQL 查询中创建临时结果集的方法,存在于单个语句的范围内,以便在查询中多次引用。它可以使 SQL 查询更加模块化和可读。 WITH 子句的语法如下: 其中: cte_name 是 CTE 的名称。 (column_name1, column_name2, …) 是可选的,用于

    2024年04月24日
    浏览(24)
  • Oracle-day3:子查询、with as语句、聚合函数

    例题:

    2024年02月11日
    浏览(30)
  • 简明SQL别名指南:掌握AS实现列名更名

    在 SQL 查询中,使用 {原始字段名} as {别名} 的语法来为查询结果的列赋予更直观的名称,以提高查询结果的可读性和可理解性。  以下是用到的表。 用AS更名 例如,查询表1的name字段,并将其 更名 为\\\"名字\\\",同时查询age字段并将其 更名 为\\\"年龄\\\"。 用空格更名 例如,查询表

    2024年02月09日
    浏览(35)
  • 基础SQL语法语句大全(一篇学会所有SQL语句)

       如:select distinct name from student;  如:select name,salary from employee where deptno = 3;  如:select * from employees where deptno = 3 and salary-5000;(两个条件同时满足) select * from employees where (deptno =3 or depton =1) and salary 5000;  如:select * from dept where loc like \\\'一楼%\\\';(表示查找loc字段中以一楼开

    2023年04月17日
    浏览(43)
  • SQL Server基础-SQL语句

    --1、  创建TestDB数据库 create database TestDB; --2、  查看TestDB数据库是否存在 IF EXISTS (SELECT 1 FROM SYSDATABASES WHERE NAME=\\\'TestDB\\\') SELECT 1 ELSE SELECT 0; --3、  在TestDB数据库创建stuInfo学生表,字段:stuSeat座位号,stuName姓名,stuNo学号,stuAge年龄,stuID身价证号码,stuAddress住址

    2024年02月07日
    浏览(69)
  • 前端sql语句输入框以及格式化sql语句和sql关键词高亮---sql-formatter、vue-codemirror

    1.下载 2.引入 3.使用 4.遇到的问题 “select * from 表格名称” 这个字符包含了中文,如果进行格式化,就会变成 “select * from 表 格 名 称” 中文之前添加了空格 解决方法:使用正则去掉空格 使用正侧格式化去掉空格我尝试的几种方法 方法一 方法二 方法三(最终版本) 5.优化

    2024年02月02日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包