• 请不要在回答技术问题时复制粘贴 AI 生成的内容
6260628
V2EX  ›  程序员

mysql select 的查询问题

  •  
  •   6260628 · Apr 1, 2020 · 3133 views
    This topic created in 2407 days ago, the information mentioned may be changed or developed.

    搜了半天不知道搜什么关键字,请教一下各位 mysql 里面 select a,b from table group by a 这种语句,b 的取值逻辑是什么?

    17 replies  •  2020-04-02 09:29:10 +08:00
    gz911122
    gz911122
    Apr 1, 2020❤️1
    1
    这种 sql 在 5.6 以上是不允许的
    select 的条件需要在 group by 里面,或者用 max min 之类的函数包裹起来
    6260628
    6260628
    OP
    Apr 1, 2020 via iPhone
    2
    @gz911122 我的 sql 版本是 5.6 以下,之前别的同事有按这个语法写过 sql,而且关联业务逻辑,所以请告知这个取数逻辑
    kr380709959
    kr380709959
    Apr 1, 2020❤️1
    3
    @6260628 你这个 b 是不做任何计算处理么?比如 count(b)或者是 sum(b=value)这样?
    VictorJing94
    VictorJing94
    Apr 1, 2020❤️1
    4
    你加个聚合函数吧
    xuanbg
    xuanbg
    Apr 1, 2020❤️1
    5
    这种写法,这个 b 取到的是哪一行的 b 就是个玄学问题了……正确的写法是用 max(),min(),sum()这些函数去取出符合你预期的 b
    2379920898
    2379920898
    Apr 1, 2020❤️1
    6
    A 分组里面的 B,咋了?
    skymei
    skymei
    Apr 1, 2020❤️1
    7
    B 应该是匹配到的第一条吧,之前研究过,忘了...
    raymanr
    raymanr
    Apr 1, 2020❤️2
    8
    感觉这个问题好像也没啥好研究的, 本身就是不规范的写法...
    6260628
    6260628
    OP
    Apr 1, 2020 via iPhone
    9
    最主要的是贸然加了 max 或者 min 怕会影响查询逻辑,之前写这个代码的大哥已经离职了
    6260628
    6260628
    OP
    Apr 1, 2020 via iPhone
    10
    引以为戒吧,哭了
    siriussilen
    siriussilen
    Apr 1, 2020❤️1
    11
    取到的是每个 group 下的第一行数据
    siriussilen
    siriussilen
    Apr 1, 2020❤️1
    12
    这个我前两天刚研究过 在 leetcode 上面的评测实验过
    skymei
    skymei
    Apr 1, 2020❤️1
    14
    @skymei
    官方文档里面是这么描述的
    The server is free to choose any value from each group, so unless they are the same, the values chosen are nondeterministic.
    值不确定
    glacer
    glacer
    Apr 1, 2020❤️1
    15
    这种写法不符合 SQL 标准,属于 MySQL 引擎的自定义行为
    hbolive
    hbolive
    Apr 1, 2020❤️1
    16
    B 取到的值取决于对应的 A,而 A 是返回的结果是 GROUP BY 结果集中第一条数据。。
    littlewing
    littlewing
    Apr 2, 2020 via iPhone
    17
    any value,未定义行为,任何一个值都有可能,mysql 没有明确规定
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2894 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 00:25 · PVG 08:25 · LAX 16:25 · JFK 19:25
    ♥ Do have faith in what you're doing.