SELECT a,b from <table_name> GROUP BY  a,b,c.
以上是有效的sql语句吗?
不是没有表名就不是。如果它有一个表名,它将是有效的,但可能不是很有用。
通常,将 GROUP BY 子句与一些聚合函数(SUM、COUNT、MAX、MIN 等)结合使用来导出与分组字段相关的一些值。
如果您包含表名,我猜您是在询问是否可以按未选择的元素 c 分组。是的你可以。
是的,该查询是合法的 SQL。SQL是否有用完全是另一回事。
查询
select a , b
from foo
group by a,b,c
执行以下操作:
a1b和c.c)。由于其中一个分组列被丢弃,因此不能保证指定的查询是一组唯一的行。它很可能包含重复项。例如,如果group by想出要返回的这些组:
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
所以,不一定有用。
不——你需要一张桌子。
SELECT a,b FROM myTable GROUP BY a,b,c
其中 myTable 是您从中选择的表(必须包含 a、b 和 c 列)。
否 - 因为您没有指定表名。如果你有,那么是的,它肯定对 mysql 有效,不确定 Oracle(它验证 GROUPing 的方式非常不同)。但这没有任何意义...
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
也许如果你解释了你问这个问题的真正原因,我们可以做出更明智的尝试来回答它。