我的讲师说:
SELECT 列表中的所有列名必须出现在 GROUP BY 子句中,除非名称仅在聚合函数中使用。
我只是想对此进行一些确认,因为我想不出一个合乎逻辑的解释来解释为什么它应该是真的。
想象一下以下情况:
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 选择一个随机值,并且我相信有些数据库会给您一条错误消息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)