SQL GROUP BY是一个设计缺陷?

为什么SQL要求我指定要对哪些属性进行分组?为什么不能使用所有非聚合?

如果一个属性没有被聚合,并且不在GROUP BY子句中,那么非确定性选择将是唯一的选择假设元组是无序的(mysql种类是这样的),这是一个巨大的得到。据我所知,Postgresql要求不出现在GROUP BY中的所有属性必须聚合,这强化了它是多余的。

>我缺少一些东西,或者这是一个语言设计缺陷,促进宽松的实现,使查询更难写?
>如果我缺少某些东西,什么是一个示例查询,其中不能推断组属性?

您不必按照您选择的完全相同的方式分组。 :

SQL:select priority,count(*) from rule_class
group by priority

PRIORITY COUNT(*) 70 1 50 4 30 1 90 2 10 4

SQL:select decode(priority,50,'Norm','Odd'),count(*) from rule_class group by priority

DECO COUNT(*) Odd 1 Norm 4 Odd 1 Odd 2 Odd 4

SQL:select decode(priority,50,'Norm','Odd'),count(*) from rule_class group by decode(priority,50,'Norm','Odd')

DECO COUNT(*) Norm 4 Odd 8

http://stackoverflow.com/questions/2311034/is-sql-group-by-a-design-flaw

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:SQL GROUP BY是一个设计缺陷?