当我们在任何关系数据库中编写“分组依据”时,语法总是需要这些值。难道我们不能通过不强制提供按值分组来使语法简单一点吗?默认情况下,选择中提到的任何列都将被分组。
不过有几点需要考虑
- 不包括选择中的聚合列
- 如果您想按某些列分组但不想选择它们,那么您可以在 group by 子句中提供值
问这个问题以了解是否有任何原因说明为什么 group by cluase 总是需要价值,或者我可能遗漏了有关 SQL 语法语义的其他原因。
当我们在任何关系数据库中编写“分组依据”时,语法总是需要这些值。难道我们不能通过不强制提供按值分组来使语法简单一点吗?默认情况下,选择中提到的任何列都将被分组。
不过有几点需要考虑
问这个问题以了解是否有任何原因说明为什么 group by cluase 总是需要价值,或者我可能遗漏了有关 SQL 语法语义的其他原因。
这个
group by
结构已经存在了很多很多年,所以我猜对这种“语法糖果”没有任何需求(尽管我前段时间确实写了一个 MI 应用程序就是这样做的,只是在应用程序代码中!)。我会说这与使用“ ”有类似
select *
的风险。如果确实存在这样的结构,您可能会遇到这样的情况:某人 [else] 可能会在
select
列表中添加更多字段,而没有意识到他们也需要进入 [更短且非常容易错过]group by
子句。如果这些新字段恰好是包含千兆字节视频数据或非常非常大的字符数据的 Blob 字段,那么查询可能会开始执行......“相当糟糕”。就 SQL 而言,显式几乎总是最好的策略。