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
执行以下操作:
a
1b
和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
也许如果你解释了你问这个问题的真正原因,我们可以做出更明智的尝试来回答它。