SELECT a,b from <table_name> GROUP BY a,b,c
。
上面是一个有效的sql语句吗?
答案 0 :(得分:4)
不是没有表名,它不是。如果它有一个表名,它将是有效的,但可能不是很有用。
通常会将GROUP BY子句与某些聚合函数(SUM,COUNT,MAX,MIN等)结合使用,以导出与分组字段相关的一些值。
答案 1 :(得分:2)
如果你包含一个表名,我猜你是否可以通过一个未选择的元素c进行分组。是的,你可以。
答案 2 :(得分:1)
不 - 你需要一张桌子。
SELECT a,b FROM myTable GROUP BY a,b,c
其中myTable是您选择的表(必须包含a,b和c列)。
答案 3 :(得分:0)
否 - 因为您没有指定表名。如果你有,那么是的,它肯定对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
也许如果你解释了你提出这个问题的真正原因,我们可以更明智地尝试回答它。
答案 4 :(得分:0)
是的,该查询是合法的SQL。是否有用 SQL完全是另一回事。
查询
select a , b
from foo
group by a,b,c
以下内容:
a
,b
和c
的唯一组合为1。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
所以,不一定有用。