Mysql 按子句分组理解

Mysql 按子句分组理解,mysql,sql,oracle,Mysql,Sql,Oracle,按a、b、c从组中选择a、b 以上是有效的sql语句吗 不是没有表名的,它不是。如果它有一个表名,它将是有效的,但可能不是很有用 通常,可以将GROUP BY子句与一些聚合函数(SUM、COUNT、MAX、MIN等)结合使用,以导出与分组字段相关的一些值 不是没有表名的,它不是。如果它有一个表名,它将是有效的,但可能不是很有用 通常,可以将GROUP BY子句与一些聚合函数(SUM、COUNT、MAX、MIN等)结合使用,以导出与分组字段相关的一些值 不,你需要一张桌子 按a、b、c从myTab

按a、b、c从组中选择a、b


以上是有效的sql语句吗

不是没有表名的,它不是。如果它有一个表名,它将是有效的,但可能不是很有用


通常,可以将GROUP BY子句与一些聚合函数(SUM、COUNT、MAX、MIN等)结合使用,以导出与分组字段相关的一些值

不是没有表名的,它不是。如果它有一个表名,它将是有效的,但可能不是很有用

通常,可以将GROUP BY子句与一些聚合函数(SUM、COUNT、MAX、MIN等)结合使用,以导出与分组字段相关的一些值

不,你需要一张桌子

按a、b、c从myTable组中选择a、b

其中myTable是您要从中选择的表(必须有a、b和c列)。

否-您需要一个表

按a、b、c从myTable组中选择a、b


其中myTable是您要从中选择的表(必须有a、b和c列)。

否-因为您没有指定表名。如果您有,那么是的,它肯定对mysql有效,但对Oracle不确定(Oracle验证分组的方式非常不同)。但这没有任何意义

a  b  c
0  0  0
0  0  1
0  1  0
0  1  1
将查询应用于上表将给出:

0 0 
0 0
0 1
0 1
我不认为这会是一个有意义的结果-如果你不想要一个聚合值,那么DISTINCT更有意义-但给出了一个不同的结果:

SELECT DISTINCT a, FROM `atable` 

0 0
0 1

如果你解释了你问这个问题的真正原因,也许我们可以做出更明智的尝试来回答它。

否-因为你没有指定表名。如果您有,那么是的,它肯定对mysql有效,但对Oracle不确定(Oracle验证分组的方式非常不同)。但这没有任何意义

a  b  c
0  0  0
0  0  1
0  1  0
0  1  1
将查询应用于上表将给出:

0 0 
0 0
0 1
0 1
我不认为这会是一个有意义的结果-如果你不想要一个聚合值,那么DISTINCT更有意义-但给出了一个不同的结果:

SELECT DISTINCT a, FROM `atable` 

0 0
0 1

如果你解释了你问这个问题的真正原因,也许我们可以做出更明智的尝试来回答它。

如果你包括一个表名,我想你是在问你是否可以按未选择的元素c分组。是的,您可以。

如果您包括一个表名,我想您是在问您是否可以按未选择的元素c进行分组。是的,你可以。

是的,这个查询是合法的。SQL是否有用完全是另一回事

询问

select a , b
from foo
group by a,b,c
是否有下列情况:

  • 将源表中的行分组为不同的组,每个组分别对应于
    a
    b
    c
    列的唯一组合
  • 然后将每个这样的组折叠成一行,其中包含分组列和查询所需的任何聚合函数的值
  • 结果集然后返回给调用者,抛出任何不需要的列(在本例中为column
    c
由于其中一个分组列被丢弃,因此不能保证指定的查询是一组唯一的行。它很可能包含重复项。例如,如果
groupby
提出要返回的组:

A  B  C
-  -  -
0  0  0
0  0  1
0  1  0
0  1  1
1  0  0
1  0  1
1  1  0
1  1  1
查询返回的结果集将是

A  B
-  -
0  0
0  0
0  1
0  1
1  0
1  0
1  1
1  1

因此,不一定有用。

是的,该查询是合法的SQL。SQL是否有用完全是另一回事

询问

select a , b
from foo
group by a,b,c
是否有下列情况:

  • 将源表中的行分组为不同的组,每个组分别对应于
    a
    b
    c
    列的唯一组合
  • 然后将每个这样的组折叠成一行,其中包含分组列和查询所需的任何聚合函数的值
  • 结果集然后返回给调用者,抛出任何不需要的列(在本例中为column
    c
由于其中一个分组列被丢弃,因此不能保证指定的查询是一组唯一的行。它很可能包含重复项。例如,如果
groupby
提出要返回的组:

A  B  C
-  -  -
0  0  0
0  0  1
0  1  0
0  1  1
1  0  0
1  0  1
1  1  0
1  1  1
查询返回的结果集将是

A  B
-  -
0  0
0  0
0  1
0  1
1  0
1  0
1  1
1  1

因此,不一定有用。

因为缺少表名,所以不一定有用!你为什么问这个?您是否在MySQL中尝试过上述方法,但失败了,出现了一个不可理解的错误,或者您只是好奇?我很好奇。据我所知,在SELECT子句中指定的列上只允许使用聚合函数,而GROUPBY子句中不允许使用聚合函数。另外,我想知道,是否必须在SELECT子句中包含GROUP BY中指定的所有列。因为缺少表名,所以不是这样!你为什么问这个?您是否在MySQL中尝试过上述方法,但失败了,出现了一个不可理解的错误,或者您只是好奇?我很好奇。据我所知,在SELECT子句中指定的列上只允许使用聚合函数,而GROUPBY子句中不允许使用聚合函数。另外,我想知道,是否必须在SELECT子句中包含GROUP BY中指定的所有列。很抱歉,请从GROUP BY a、b、c中选择a、b。这是声明。很抱歉,请按a、b、c从组中选择a、b。是的,谢谢你的澄清。在设置问题格式时,我忘了包括表名。是的,谢谢你的澄清。在设置问题格式时,我忘了包括表名。这是最有用的答案+一年后,山体滑坡是最有用的答案+1几年后