【MySQL学习杂记】 2017年7月13日

时间:2022-04-13 10:12:32

1. 关于分组

  当select使用groupby语法时,select返回字段集合里面除去 <使用了聚合函数的字段>、<不包含在 group by 子句的字段> 的其他字段,这些字段的值可能是该字段列中的任意值。

  所以,出现在select中的其他字段应该被包含在group by里面,如果此违背你的意向,你应该另寻它法。

group by 的执行的过程,先执行select 的操作返回一个程序集,  然后去执行分组的操作,

这时候他将根据group by 后面的字段进行分组,并且将相同的字段并称一列数据,

如果group by 后面没有这个字段的话就要分成好多的数据,但是分组就只能将相同的数据分成两列数据,而一列中又只能放入一个字段,所以那些没有进行分组的 数据系统不知道将数据放入哪里,所以就出现此错误

  当然,如果你确定select字段集合里面除了groupby字段以及使用了聚合函数的字段之外的其他字段在所有的列中是相同的值,你可以使用这种查询,因为就算随机任意选出这些字段的值,也只有一种选择,^-^!

2. 关于max

  当你需要找一列的最大值时,你可以使用 order by,并同时尽可能使用使用where字段,这些字段尽可能使用索引,来过滤结果集,使得性能提升