派生表是从SELECT语句返回的虚拟表。派生表类似于临时表,但是在SELECT语句中使用派生表比临时表简单得多,因为它不需要创建临时表的步骤。当SELECT语句的FROM子句中使用独立子查询时,我们将其称为派生表。与子查询不同,派生表必须具有别名,以便稍后在查询中引用其名称。 如果派生表没有别名,MySQL将发出错误。
数据库order by用法。
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
派生表没有别名会报错,如下图所示
派生表主要是用来对数据进行二次处理的,在第一次处理的结果之上进行操作。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态