mysql group by 语法的疑问。

2018-08-16 20:14:12 +08:00
 mmdsun

系统的两张表,合同和价格清单。是一对多的关系。 现在去需要统计合同下所有价格合。

观察 git 历史记录, 最早 SQL 是: select 合同 id,合同名称,合同时间,sum(p.价格) from 合同 left join 价格清单 as p group by 合同 id,合同名称,合同时间

后来 SQL 是: select 合同 id,合同名称,合同时间,sum(p.价格) from 合同 left join 价格清单 as p group by 合同 id

mysql 没有报错。而且数据是正确的。 我记得 group by 语法是,所有被 select 的项(除聚合函数的项之外),都必须出现在 group by 中。如何解释 MySQL 的这种情况呢。

1028 次点击
所在节点    问与答
4 条回复
mmdsun
2018-08-16 20:26:34 +08:00
百度说 MySQL 语法要求不严。group by 不用写全。数据是否正确还需确认
panpanpan
2018-08-16 20:28:14 +08:00
https://dev.mysql.com/doc/refman/8.0/en/group-by-handling.html

MySQL 优化了,没有 group by 的字段会随机返回一条。
mmdsun
2018-08-16 21:01:17 +08:00
@panpanpan 谢谢,我细看一下。不过我刚刚测试列结果不是随机出现。数据是正确的。
panpanpan
2018-08-17 10:25:53 +08:00
@mmdsun 你都说了是一对多的关系,那么 group by 合同 id 了,合同名称和合同时间在同一个 id 下都是相同的,随机返回一条也就不会变了啊。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/480507

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX