未分類 21 3 月 2020 mysql select 的查询问题 mysql select 的查询问题 資深大佬 : 6260628 29 搜了半天不知道搜什么关键字,请教一下各位 mysql 里面 select a,b from table group by a 这种语句,b 的取值逻辑是什么? 大佬有話說 (17) 資深大佬 : gz911122 这种 sql 在 5.6 以上是不允许的select 的条件需要在 group by 里面,或者用 max min 之类的函数包裹起来 主 資深大佬 : 6260628 @gz911122 我的 sql 版本是 5.6 以下,之前别的同事有按这个语法写过 sql,而且关联业务逻辑,所以请告知这个取数逻辑 資深大佬 : kr380709959 @6260628 你这个 b 是不做任何计算处理么?比如 count(b)或者是 sum(b=value)这样? 資深大佬 : VictorJing94 你加个聚合函数吧 資深大佬 : xuanbg 这种写法,这个 b 取到的是哪一行的 b 就是个玄学问题了……正确的写法是用 max(),min(),sum()这些函数去取出符合你预期的 b 資深大佬 : 2379920898 A 分组里面的 B,咋了? 資深大佬 : skymei B 应该是匹配到的第一条吧,之前研究过,忘了… 資深大佬 : raymanr 感觉这个问题好像也没啥好研究的, 本身就是不规范的写法… 主 資深大佬 : 6260628 最主要的是贸然加了 max 或者 min 怕会影响查询逻辑,之前写这个代码的大哥已经离职了 主 資深大佬 : 6260628 引以为戒吧,哭了 資深大佬 : siriussilen 取到的是每个 group 下的第一行数据 資深大佬 : siriussilen 这个我前两天刚研究过 在 leetcode 上面的评测实验过 資深大佬 : skymei https://dev.mysql.com/doc/refman/5.6/en/group-by-handling.html 資深大佬 : skymei @skymei 官方文档里面是这么描述的 The server is free to choose any value from each group, so unless they are the same, the values chosen are nondeterministic.值不确定 資深大佬 : glacer 这种写法不符合 SQL 标准,属于 MySQL 引擎的自定义行为 資深大佬 : hbolive B 取到的值取决于对应的 A,而 A 是返回的结果是 GROUP BY 结果集中第一条数据。。 資深大佬 : littlewing any value,未定义行为,任何一个值都有可能,mysql 没有明确规定