mysql中的派生表

 2023-09-15 阅读 17 评论 0

摘要:派生表是从SELECT语句返回的虚拟表。派生表类似于临时表,但是在SELECT语句中使用派生表比临时表简单得多,因为它不需要创建临时表的步骤。当SELECT语句的FROM子句中使用独立子查询时,我们将其称为派生表。与子查询不同,派生表必须具有别名࿰

派生表是从SELECT语句返回的虚拟表。派生表类似于临时表,但是在SELECT语句中使用派生表比临时表简单得多,因为它不需要创建临时表的步骤。当SELECT语句的FROM子句中使用独立子查询时,我们将其称为派生表。与子查询不同,派生表必须具有别名,以便稍后在查询中引用其名称。 如果派生表没有别名,MySQL将发出错误。

数据库order by用法。

文章目录

  • mysql派生表概述
  • 基本格式
  • 实例应用
  • 本文小结


mysql派生表概述

mysql主键和外键,我们首先得知道,派生表是从select语句返回的虚拟表。派生表类似于临时表,但是在SELECT语句中使用派生表比临时表简单得多,因为它不需要创建临时表的步骤。所以当SELECT语句的FROM子句中使用独立子查询时,我们将其称为派生表。


基本格式

SELECT column_list
FROM
*    (SELECT 
*        column_list
*    FROM
*        table_1) derived_table_name;
WHERE derived_table_name.column > 1...

实例应用

我们有如下的统计结果

SELECTIF(length(A.DICT_NAME)>0,AVG( A.DICT_CODE ),0) WASTE_TYPE,COUNT( T.ID ) NUMBER,IFNULL( SUM( T.WEIGHT ), 0 ) WEIGHT,IFNULL( A.DICT_NAME, '总重量/总数量' ) DICT_NAMEFROMt_sys_dictionary ALEFT JOIN t_mw_waste_material T ON T.WASTE_TYPE = A.DICT_CODE AND T.ORG_CODE = '34010201'AND T.DEPT_CODE = '3401020101'WHEREA.DICT_TYPE = '废弃物类别' GROUP BYA.DICT_NAME WITH ROLLUP 

在这里插入图片描述

如果想对以上的结果按照number从大到小排序,应该怎么弄。mysql5.7中WITH ROLLUP 与ORDER BY是不可以一起使用的。

在这里插入图片描述
我们可以把前面的结果作为一个派生表,在派生表的基础上进行排序操作,如下所示

SELECT* 
FROM(SELECTIF( length( A.DICT_NAME )> 0, AVG( A.DICT_CODE ), 0 ) WASTE_TYPE,COUNT( T.ID ) NUMBER,IFNULL( SUM( T.WEIGHT ), 0 ) WEIGHT,IFNULL( A.DICT_NAME, '总重量/总数量' ) DICT_NAME FROMt_sys_dictionary ALEFT JOIN t_mw_waste_material T ON T.WASTE_TYPE = A.DICT_CODE AND T.ORG_CODE = '34010201' AND T.DEPT_CODE = '3401020101' WHEREA.DICT_TYPE = '废弃物类别' GROUP BYA.DICT_NAME WITH ROLLUP ) tmp 
ORDER BYNUMBER DESC

在这里插入图片描述

派生表没有别名会报错,如下图所示

在这里插入图片描述


本文小结

派生表主要是用来对数据进行二次处理的,在第一次处理的结果之上进行操作。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/62659.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息