首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

神奇的 SQL 之层级 → 为什么 GROUP BY 之后不能直接引用原表中的列

为什么 GROUP BY 之后不能直接引用原表(不在 GROUP BY 子句)中的列 ? 莫急,我们慢慢往下看。...SQL 模式主要分两类:语法支持类和数据检查类,常用的如下   语法支持类         ONLY_FULL_GROUP_BY       对于 GROUP BY 聚合操作,如果在 SELECT 中的列...0,产生一个warning;       2、Out Of Range,变成插入最大边界值;       3、当要插入的新行中,不包含其定义中没有显式DEFAULT子句的非NULL列的值时,该列缺少值...SQL 的世界其实是层级分明的等级社会,将低阶概念的属性用在高阶概念上会导致秩序的混乱,这是不允许的。此时我相信大家都明白:为什么聚合后不能再引用原表中的列 。...SELECT 子句中不能直接引用原表中的列的原因;   3、一般来说,单元素集合的属性和其唯一元素的属性是一样的。

2.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何使用Excel将某几列有值的标题显示到新列中

    如果我们有好几列有内容,而我们希望在新列中将有内容的列的标题显示出来,那么我们怎么做呢? Excel - TEXTJOIN function 1....- - - - 4 - - - 在开始,我们曾经使用INDEX + MATCH的方式,但是没有成功,一直是N/A https://superuser.com/questions/1300246/if-cell-contains-value-then-column-header...所以我们后来改为TEXTJOIN函数,他可以显示值,也可以显示值的标题,还可以多个列有值的时候同时显示。...- - 4 - - - 15 Year 5 - - - - 5 - - - =TEXTJOIN(", ",TRUE,IF(ISNUMBER(B2:I2),$B$1:$I$1,"")) 如果是想要显示值,...则: =TEXTJOIN(", ",TRUE,IF(ISNUMBER(B2:I2),B2:I2,"")) 其中,ISNUMBER(B2:I2)是判断值是不是数字,可以根据情况改成是不是空白ISBLANK

    11.3K40

    史上最全存储引擎、索引使用及SQL优化的实践

    (2)使用躲表空间存储,这种方式创建的表的表结构任然存在.frm文件中,但是每个表的数据和索引单独保存在.ibd中。 ?...sql语句的状态,很重要的列。...如将主键置于where列表中,MySQL就能将该查询转换为一个常亮。const于将“主键”或“唯一”索引的所有部分与常量值进行比较。...eq_ref :类似ref,区域在于使用的是唯一索引,使用主键的关联查询,关联查询出的记录只有一条。常见于主键或唯一索引扫描 ref :非唯一性索引扫描,返回匹配某个单独值的所有行。...本质上也是一种索引访问,返回所有匹配某个单独值的所有行(多个) range :只检索给定返回的行,使用一个索引来选择行。where之后出现between,,in等操作。

    1.4K30

    SQL命令 GROUP BY

    SQL命令 GROUP BY SELECT子句,它根据一个或多个列对查询的结果行进行分组。 大纲 SELECT ......GROUP BY子句接受查询的结果行,并根据一个或多个数据库列将它们分成单独的组。 当将SELECT与GROUP BY结合使用时,将为GROUP BY字段的每个不同值检索一行。...它为每个City和Age值的唯一组合选择任意一行。 因此,GROUP BY City,Age返回与GROUP BY Age,City相同的结果。 字段必须通过列名指定。...GROUP BY StreamField操作流字段的OID,而不是它的实际数据。 因为所有流字段oid都是唯一的值,GROUP BY对实际的流字段重复数据值没有影响。...这样做的好处是将每个字母变体作为一个单独的组返回。 它的性能缺点是不能使用字段的索引。 可以使用管理门户在系统范围内为包含GROUP BY子句的所有查询配置此行为。

    3.9K30

    【MySQL高级】优化SQL步骤

    ,此时这些有问题的 SQL 语句就成为整个系统性能的瓶颈,因此我们必须要对它们进行优化,本章将详细介绍在 MySQL 中优化 SQL 语句的方法。...列,显示使用当前连接的sql语句的状态,很重要的列。...id相同的可以认为是一组,从上往下顺序执行;在所有的组中,id的值越大,优先级越高,越先执行。...const于将 "主键" 或 "唯一" 索引的所有部分与常量值进行比较 eq_ref 类似ref,区别在于使用的是唯一索引,使用主键的关联查询,关联查询出的记录只有一条。...常见于主键或唯一索引扫描 ref 非唯一性索引扫描,返回匹配某个单独值的所有行。本质上也是一种索引访问,返回所有匹配某个单独值的所有行(多个) range 只检索给定返回的行,使用一个索引来选择行。

    68322

    GROUP BY 后 SELECT 列的限制:which is not functionally dependent on columns in GROUP BY clause

    SQL 模式主要分两类:语法支持类和数据检查类,常用的如下 语法支持类    ONLY_FULL_GROUP_BY 对于 GROUP BY 聚合操作,如果在 SELECT 中的列、HAVING 或者...0,产生一个warning; 2、Out Of Range,变成插入最大边界值; 3、当要插入的新行中,不包含其定义中没有显式DEFAULT子句的非NULL列的值时,该列缺少值; 解决步骤 MySQL...为什么会有 ONLY_FULL_GROUP_BY 模式   虽然案例中,无论是“严格模式”,还是“宽松模式”,结果都是对的,那是因为 cno 与 cname 唯一对应的,如果 cno 与 cname 不是唯一对应...SQL 的世界其实是层级分明的等级社会,将低阶概念的属性用在高阶概念上会导致秩序的混乱,这是不允许的。此时我相信大家都明白:为什么聚合后不能再引用原表中的列 。...SELECT 子句中不能直接引用原表中的列的原因;   3、一般来说,单元素集合的属性和其唯一元素的属性是一样的。

    3.2K50

    SQL命令 SELECT(一)

    DISTINCT关键字指定选择项的值必须是唯一的。 DISTINCT BY关键字子句指定项值必须是唯一的。 项目(或用逗号分隔的项目列表)用括号括起来。 通常,项目是列的名称。...在更复杂的查询中,SELECT可以检索列、聚合和非列数据,可以使用连接从多个表检索数据,也可以使用视图检索数据。 SELECT还可以用于从SQL函数、宿主变量或字面量返回值。...在动态SQL中,SELECT将值检索到%SQL中。 声明类。 IRIS设置一个状态变量SQLCODE,它指示SELECT的成功或失败。...正在编译的例程/类中的所有其他SQL语句将生成代码,就像PTools被关闭一样。 这使用户能够分析/检查应用程序中的特定问题SQL语句,而不必为未被调查的SQL语句收集无关的统计信息。...任何类型的DISTINCT子句都可以指定多个项来测试唯一性。 列出一个以上的项将检索两个项组合中不同的所有行。 DISTINCT认为NULL是唯一的值。

    5.3K10

    EXPLAIN 使用分析

    ref: 非唯一性索引扫描,返回匹配某个单独值的所有行,本质上也是一种索引访问,它返回所有匹配某个单独值的行,可能会找多个符合条件的行,属于查找和扫描的混合体。...eq_ref: 唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。常见于唯一索引或者主键扫描。...如将主键置于where列表中,MySQL就能将该查询转换为一个常量。 system: 表中仅有一行,这是const联结类型的一个特例。平时不会出现,这个也可以忽略不计。...NULL: MySQL在优化过程中分解语句,执行时甚至不用访问表或索引,例如从一个索引列里选取最小值可以通过单独索引查找完成。 一般保证查询至少达到range级别,最好能达到ref。...ref 列与索引的比较,表示上述表的连接匹配条件,即哪些列或常量被用于查找索引列上的值 rows 根据表统计信息以及索引选用情况,大致估算出找到所需的记录所需要读取的行数 Extra 包含不适合在其他列中显示

    1K20

    为什么 GROUP BY 之后不能直接引用原表中的列

    为什么 GROUP BY 之后不能直接引用原表(不在 GROUP BY 子句)中的列 ? 莫急,我们慢慢往下看。...SQL 模式主要分两类:语法支持类和数据检查类,常用的如下   语法支持类         ONLY_FULL_GROUP_BY       对于 GROUP BY 聚合操作,如果在 SELECT 中的列...0,产生一个warning;       2、Out Of Range,变成插入最大边界值;       3、当要插入的新行中,不包含其定义中没有显式DEFAULT子句的非NULL列的值时,该列缺少值...SQL 的世界其实是层级分明的等级社会,将低阶概念的属性用在高阶概念上会导致秩序的混乱,这是不允许的。此时我相信大家都明白:为什么聚合后不能再引用原表中的列 。...SELECT 子句中不能直接引用原表中的列的原因;   3、一般来说,单元素集合的属性和其唯一元素的属性是一样的。

    1.7K10

    MySQL进阶笔记-3(MySQL优化)

    ,此时这些有问题的 SQL 语句就成为整个系统性能的瓶颈,因此我们必须要对它们进行优化,本章将详细介绍在 MySQL 中优化 SQL 语句的方法。...列,显示使用当前连接的sql语句的状态,很重要的列。...id相同的可以认为是一组,从上往下顺序执行;在所有的组中,id的值越大,优先级越高,越先执行。...const于将 "主键" 或 "唯一" 索引的所有部分与常量值进行比较 eq_ref 类似ref,区别在于使用的是唯一索引,使用主键的关联查询,关联查询出的记录只有一条。...常见于主键或唯一索引扫描 ref 非唯一性索引扫描,返回匹配某个单独值的所有行。本质上也是一种索引访问,返回所有匹配某个单独值的所有行(多个) range 只检索给定返回的行,使用一个索引来选择行。

    46410

    想学数据分析但不会Python,过来看看SQL吧(下)~

    ,在SQL中数据分组是使用GROUP BY子句建立的。...⚠️UNION 内部的 SELECT 语句必须拥有相同数量的列,列也必须拥有相似的数据类型。而且UNION返回的结果只会选取列中不同的值(即唯一值)。...聚合函数 SQL的聚合函数如下所示: 函数 说明 AVG() 返回某列的均值 COUNT() 返回某列的行数 MAX() 返回某列的最大值 MIN() 返回某列的最小值 SUM() 返回某列的和 使用示例...聚合不同值 当添加DISTINCT参数时,就可以只对不同值(也就是某列中的唯一值)进行函数操作。...DATE格式,主要是将单独的月份或者年份等等转换为SQL可以读懂的DATE类型数据,这样做的目的是为了后续可以方便地使用时间筛选函数。

    3.1K30

    MySql基础-笔记12 -重复数据处理、SQL注入、导入导出数据

    1、处理重复数据1.1、防止表中出现重复数据可以在 MySQL 数据表中设置指定的字段为 PRIMARY KEY(主键) 或者 UNIQUE(唯一) 索引来保证数据的唯一性。...图片设置表中字段数据不能重复,可以设置双主键模式来设置数据的唯一性, 如果你设置了双主键,那么那个键的默认值不能为 NULL,可设置为 NOT NULL图片NSERT IGNORE INTO 与 INSERT...图片1.2、统计重复数据统计study_tb8中name、old、sex出现的重读记录数图片查询重复的值,操作步骤:确定哪一列包含的值可能会重复;在列选择列表使用COUNT(*)列出的那些列;在GROUP...图片1.4、读取不重复数据使用 GROUP BY 来读取数据表中不重复的数据图片1.5、删除重复数据图片也可以在数据表中添加 INDEX(索引) 和 PRIMAY KEY(主键)这种简单的方法来删除表中的重复记录...2、SQL 注入略(后续单独补充,SQL注入安全问题)3、导出数据MySQL中你可以使用SELECT...INTO OUTFILE语句来简单的导出数据到文本文件上3.1、使用 SELECT ...

    1.4K150

    Mysql数据库基础知识总结,结构分明,内容详细

    )),使用ATAN2(M,N)计 算反正切值则为ATAN2(y2-y1,x2-x1)。...() 基本使用 可以使用GROUP BY子句将表中的数据分成若干组 SELECT column, group_function(column) FROM table [WHERE condition...满足HAVING 子句中条件的分组将被显示。 HAVING 不能单独使用,必须要跟 GROUP BY 一起使用。...:可以作用在多个列上,不与列一起,而是单独定义 根据约束起的作用,约束可分为: NOT NULL 非空约束,规定某个字段不能为空 UNIQUE 唯一约束,规定某个字段在整个表中是唯一的...(2)当需要产生唯一标识符或顺序值时,可设置自增长 (3)自增长列约束的列必须是键列(主键列,唯一键列) (4)自增约束的列的数据类型必须是整数类型 (5)如果自增列指定了 0 和 null,

    1.2K41

    ​十分钟了解 Apache Druid

    它可以快速分析数以千计属性的应用事件,并计算复杂的加载,性能,利用率指标。比如,基于百分之 95 查询延迟的 API 终端。...你可以在你的指标中包括百万唯一维度值,并随意按任何维度组合 group 和 filter(Druid 中的 dimension 维度类似于时间序列数据库中的 tag)。...img Druid 的主要特性包括: 列式存储 Druid 单独存储并压缩每一列数据。并且查询时只查询特定需要查询的数据,支持快速 scan,ranking 和 groupBy。...根据不同列的数据类型(string,number 等),Druid 对其使用不同的压缩和编码方式。Druid 也会针对不同的列类型构建不同类型的索引。...除了标准的 SQL 操作外,Druid 还支持大量的唯一性操作,利用 Druid 提供的算法套件可以快速的进行计数,排名和分位数计算。 ?

    2K20

    Mysql学习笔记,持续记录

    如果分组列中具有 NULL 值,则 NULL 将作为一个分组返回。如果列中有多行 NULL 值,它们将分为一组。 group by 子句必须出现在 where 子句之后,order by 子句之前。...如将主键置于where列表中,MySQL就能将该查询转换为一个常量。 eq_ref 唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。...常见于主键或唯一索引扫描 ref 非唯一性索引扫描,返回匹配某个单独值的所有行,本质上也是一种索引访问,它返回所有匹配某个单独值的行,然而,它可能会找到多个符合条件的行,所以他应该属于查找和扫描的混合体...在navicat设定的表格主键中 有 主键1,主键2,主键3,的区别,主键1不能被级联更新(删除)(CASCADE) 外键存在默认值,引起的冲突 混合键值缺少索引引起的情况,需要为他单独申请索引 在sql...GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么将认为这个SQL是不合法的,因为列不在GROUP BY从句中 STRICT_TRANS_TABLES:严格模式,在该模式下

    1.2K50

    用 Explain 命令分析 MySQL 的 SQL 执行

    [select_type_simple] primary 是 SQL 中包含复杂的子查询,此时最外层查询标记为该值。...[select_type_simple] eq_ref 唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配,常用于主键或唯一索引扫描。对于每个来自前边的表的行组合,从该表中读取一行。...[ref] ref 非唯一性索引扫描,返回匹配某个单独值的所有行,和 eq_ref 的区别是索引是非唯一索引,具体案例如下所示。...[filesort] using temporary 使用临时表保存中间结果,比如,MySQL 在对查询结果排序时使用临时表,常用于 order by 和 group by,如果出现该值,应该优化 SQL...根据我的经验,group by 一个无索引列,或者ORDER BY 或 GROUP BY 的列不是来自JOIN语句序列的第一个表,就会产生临时表。 using join buffer 使用连接缓存。

    1.5K00

    【Java 进阶篇】深入理解 SQL 聚合函数

    本文将深入探讨 SQL 中的聚合函数,包括其基本语法、常见的聚合函数类型、使用示例以及一些高级用法。 1. 什么是 SQL 聚合函数?...聚合函数能够将一列的多个值合并为一个单一的值,并提供对数据的有用摘要。 SQL 中的常见聚合函数包括 COUNT()、SUM()、AVG()、MAX() 和 MIN(),它们可用于不同类型的数据操作。...MAX() MAX() 函数用于查找某列中的最大值。它通常用于查找数值型列的最大值,也可用于日期或文本列。...GROUP BY 子句 GROUP BY 子句用于将结果集按照一个或多个列的值进行分组。它允许我们在每个分组上应用聚合函数,从而生成每个分组的摘要信息。...,我们将 employees 表按照 department 列的值分组,并计算每个部门的平均工资。

    57440
    领券