Atitit 提升可读性sql subquery udf 子查询

目录

1. 使用udf 和参数@简化join和subquery 1

1.1.1. 子查询分类 1

2. 2.1 按返回结果集分类 2

2.1.     2.2 按照对返回结果的调用方法 2

2.2. 行子查询实例 3

2.3. 标量子查询实例 3

2.4.   4.6 列子查询实例 in any all 4

  1. 使用udf 和参数@简化join和subquery

Use in select fld by udf....can not need join,,and enhance readable.

    1. 子查询分类

      1. 按结果集的行列数不同分为4种
  • 标量子查询(结果集只有一行一列)
  • 列子查询(结果集只有一列多行)
  • 行子查询(结果集有一行多列)
  • 表子查询(结果集一般为多行多列)
    1. 按子查询出现在主查询中的不同位置分

select后面:仅仅支持标量子查询。

from后面:支持表子查询。

where或having后面:支持标量子查询(单列单行)、列子查询(单列多行)、行子查询(多列多行)

exists后面(即相关子查询):表子查询(多行、多列)

  1. 1 按返回结果集分类

子查询按返回结果集的不同分为4种:表子查询,行子查询,列子查询和标量子查询。

表子查询:返回的结果集是一个行的集合,N行N列(N>=1)。表子查询经常用于父查询的FROM子句中。

行子查询:返回的结果集是一个列的集合,一行N列(N>=1)。行子查询可以用于福查询的FROM子句和WHERE子句中。

列子查询:返回的结果集是一个行的集合,N行一列(N>=1)。

标量子查询:返回的结果集是一个标量集合,一行一列,也就是一个标量值。可以指定一个标量表达式的任何地方,都可以用一个标量子查询。

从定义上讲,每个标量子查询也是一个行子查询和一个列子查询,反之则不是;每个行子查询和列子查询也是一个表子查询,反之也不是。

  1.     2.2 按照对返回结果的调用方法

子查询按对返回结果集的调用方法,可分为where型子查询,from型子查询及exists型子查询。

where型子查询:(把内层查询结果当作外层查询的比较条件)

定义:where型的子查询就是把内层查询的结果当作外层查询的条件。

from型子查询:(把内层的查询结果供外层再次查询)

定义:from子查询就是把子查询的结果(内存里的一张表)当作一张临时表,然后再对它进行处理。

exists型子查询:(把外层查询结果拿到内层,看内层的查询是否成立)

定义:exists子查询就是对外层表进行循环,再对内表进行内层查询。和in ()差不多,但是它们还是有区别的。主要是看两个张表大小差的程度。若子查询表大则用exists(内层索引),子查询表小则用in(外层索引);

3 使用子查询原则

1.一个子查询必须放在圆括号中。

2.将子查询放在比较条件的右边以增加可读性。

子查询不包含 ORDER BY 子句。对一个 SELECT 语句只能用一个 ORDER BY 子句,并且如果指定了它就必须放在主 SELECT 语句的最后。

3.在子查询中可以使用两种比较条件:单行运算符(>, =, >=, <, <>, <=) 和多行运算符(IN, ANY, ALL)。

4

————————————————

  1. 行子查询实例

如:获取和100号球员性别相同并且居住在同一城市的球员号码。

mysql> select playerno

from players

where (sex, town) = (

select sex, town

from players

where playerno = 100);

————————————————

  1. 标量子查询实例 

可以指定一个标量表达式的任何地方,几乎都可以使用一个标量子查询。

如:获取和27号球员出生在同一年的球员的号码

mysql> select playerno

from players

where year(birth_date) =

(select year(birth_date)

from players

where playerno = 27)

and playerno <> 27;

————————————————

  1.   4.6 列子查询实例 in any all

由于列子查询返回的结果集是 N 行一列,因此不能直接使用 =   >   <   >=   <=   <> 这些比较标量结果的操作符。在列子查询中可以使用 IN、ANY(SOME)和ALL操作符:

IN:在指定项内,同 IN(项1,项2,…)。

ANY:与比较操作符联合使用,ANY关键字必须接在一个比较操作符的后面,表示与子查询返回的任何值比较为 TRUE ,则返回 TRUE 。

SOME:ANY 的别名,较少使用。

ALL:与比较操作符联合使用,ALL关键字必须接在一个比较操作符的后面,表示与子查询返回的所有值比较都为 TRUE ,则返回 TRUE 。

————————————————

mysql查询语句select-子查询_数据库_jesseyoung-CSDN博客

Atitit 提升可读性sql subquery udf 子查询 目录 1. 使用udf 和参数@简化join和subquery 1 1.1.1. 子查询分类 1 2. 2.1 按返回结果集分类相关推荐

  1. Atitit. 提升软件开发效率and 开发质量---java 实现dsl 4gl 的本质and 精髓 O725

    Atitit. 提升软件开发效率and 开发质量---java 实现dsl 4gl 的本质and 精髓  O725 1. DSL主要分为三类:外部DSL.内部DSL,以及语言工作台. 1 2. DSL ...

  2. atitit 提升数据库死锁处理总结

    atitit 提升数据库死锁处理总结 正常的来说,锁上都是自动的..不用官.. 正常来讲,insert时不需要加rowlock,就默认是rowlock了, #-----锁的自动转换原理.(正常的不用理 ...

  3. Atitit 提升效率 界面gui方面的前后端分离与cbb体系建设 规范与推荐标准

    Atitit 提升效率 界面gui方面的前后端分离与cbb体系建设 规范与推荐标准 1. 界面gui方面的前后端分离重大意义1 2. 业务逻辑也适当的迁移js化1 3. 常用分离方法2 3.1. 页面 ...

  4. atitit. hb 原生sql跨数据库解决原理 获得hb 数据库类型执行期获得Dialect

    atitit. hb 原生sql跨数据库解决原理 获得hb 数据库类型执行期获得Dialect #-----原理 Hibernate 执行期获得Dialect 2010-07-28 12:59:58| ...

  5. Atitit.提升电子商务安全性 在线充值功能安全方面的设计

    Atitit.提升电子商务安全性 在线充值功能安全方面的设计 1. 防止dataservcie对充值订单表的直接改写,只能通过api,不能通过sql1 1.1. Order_id的安全取值,注入检测1 ...

  6. mysql 从a到z 查询_mysql 查询数据时按照A-Z顺序排序返回结果集

    mysql 查询数据时按照A-Z顺序排序返回结果集 $sql = "SELECT * , ELT( INTERVAL( CONV( HEX( left( name, 1 ) ) , 16, ...

  7. Atitit.提升 升级类库框架后的api代码兼容性设计指南

    Atitit.提升 升级类库框架后的api代码兼容性设计指南 1. 增加api直接增加,版本号在注释上面增加1 2. 废弃api,使用主见@dep1 3. 修改api,1 4. 修改依赖import, ...

  8. Atitit.提升软件Web应用程序 app性能的方法原理 h5 js java c# php python android .net

    Atitit.提升软件Web应用程序 app性能的方法原理 h5 js java c# php python android .net 1. 提升单例有能力的1 2. 减少工作数量2 2.1. 减少距 ...

  9. Atitit.提升api兼容性的方法 v3 q326

    Atitit.提升api兼容性的方法 v3 q326 1. Atitit.兼容性的"一加三"策略1 2. 2. 扩展表模式1 3. 3. 同时运行模式1 3.1. 3.1. 完美的 ...

  10. atitit.提升开发效率---mda 软件开发方式的革命

    atitit.提升开发效率---mda 软件开发方式的革命 1. 软件开发方式的革命开发工具的抽象层次将再次提升 1 2. 应用框架和其实现相分离 2 3. 目前的问题模型和代码不同步 2 4. MD ...

最新文章

  1. ls 中一些你不知道的事
  2. mssql 为什么连接是sleeping 而不释放_什么是数据仓库,以及我为什么需要它?
  3. python web 框架的flash消息_python web开发-flask中消息闪现flash的应用
  4. Linux Qt打包发布应用程序
  5. 电子政务项目风险管理(上)
  6. 通用程序算法和数据结构_了解通用数据结构
  7. SQLServer中在视图上使用索引(转载)
  8. android mysql sqlite_android内嵌的SQLite创建数据库,在哪里查看?
  9. 云知声今年要量产三款芯片,还公布了多模态AI芯片规划
  10. 机器学习中的混淆矩阵,准确率,精确率,召回率,F1,ROC/AUC,AP/MAP
  11. SpringApplication run方法第四步解析(三)[(未完结,暂搁置)]
  12. 被奉为经典的「金字塔原理」,教给我们哪些PPT写作技巧?
  13. 惠普服务器显示器接口类型,介绍:目前显示器主要接口
  14. 2022Vue经典面试题及答案汇总(持续更新)
  15. nuxt 如何添加robots.txt文件
  16. 《操作系统真象还原》第九章 ---- 终进入线程动斧开刀 豁然开朗拨云见日 还需解决同步机制才能长舒气
  17. 编程入门先学python好不好,学python用什么软件编程
  18. 【论文精读】EnlightenGAN: Deep Light Enhancement without Paired Supervision
  19. excel随机数_原来Excel是个很好用的点名软件
  20. php调用lol数据库,计算lol战斗力

热门文章

  1. qt .pro文件配置
  2. android接推流sdk,Android-SDK推流端说明
  3. Android的cangoback方法,Android应用开发Android8.0 WebView返回上一层失效(canGoBack返回false问题)解决办法...
  4. idea project settings在哪_IntelliJ IDEA如何对project的目录进行筛选显示?
  5. matlab green函数,地基土的传Green函数编辑中……
  6. 如何根据iframe内嵌页面调整iframe高宽续篇
  7. 【POJ 3062】Party(2-SAT、tarjan)
  8. Linux段管理,BSS段,data段,.rodata段,text段
  9. [转精]IO_STACK_LOCATION与IRP的一点笔记
  10. JavaSE基础笔记一