mmdsun
V2EX  ›  问与答

mysql group by 语法的疑问。

  •  
  •   mmdsun · Aug 16, 2018 via Android · 1462 views
    This topic created in 2920 days ago, the information mentioned may be changed or developed.

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

    观察 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 的这种情况呢。

    4 replies    2018-08-17 10:25:53 +08:00
    mmdsun
        1
    mmdsun  
    OP
       Aug 16, 2018 via Android
    百度说 MySQL 语法要求不严。group by 不用写全。数据是否正确还需确认
    panpanpan
        2
    panpanpan  
       Aug 16, 2018 via iPhone   ❤️ 1
    https://dev.mysql.com/doc/refman/8.0/en/group-by-handling.html

    MySQL 优化了,没有 group by 的字段会随机返回一条。
    mmdsun
        3
    mmdsun  
    OP
       Aug 16, 2018 via Android
    @panpanpan 谢谢,我细看一下。不过我刚刚测试列结果不是随机出现。数据是正确的。
    panpanpan
        4
    panpanpan  
       Aug 17, 2018 via iPhone   ❤️ 1
    @mmdsun 你都说了是一对多的关系,那么 group by 合同 id 了,合同名称和合同时间在同一个 id 下都是相同的,随机返回一条也就不会变了啊。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1954 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 16:13 · PVG 00:13 · LAX 09:13 · JFK 12:13
    ♥ Do have faith in what you're doing.