我的讲师说:
All column names in SELECT list must appear in GROUP BY clause unless name is used only in an aggregate function.
我只是想对此进行一些确认,因为我想不出一个合乎逻辑的解释来解释为什么它应该是真的。
最佳答案
想象一下以下情况:
A B C
Cat 10 False
Dog 25 True
Dog 20 False
Cat 5 False
如果您选择 A、B 并仅按 A 进行分组 - 您的输出会是什么?你只有两行(或元组),因为 A 有两个值 - 但它如何显示 B?
如果按 A、B 分组,您将得到四行,没有问题。 如果按 A 分组并对 B 执行函数 - 如 SUM(B),那么您会再次得到两行:
Cat 15
Dog 45
但是如果您选择 A、B 并且仅按 A 分组 - 它不知道该怎么做。说实话,我相信有些数据库会在这种情况下为 B 选择一个随机值,并且我相信有些数据库会给您一条错误消息。
关于sql - SELECT 列表中的所有列是否都必须出现在 GROUP BY 子句中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5986127/