SQL语句使用聚合函数之后有些字段没有分组显示,那它显示的规则是什么?

SELECT tb.userInfoId,MAX(hk.backTime) backTime,hk.backMoney
            FROM (SELECT orderCode,backTime,backMoney 
                  FROM repaymentList 
                  WHERE backTime <= NOW()) hk
            INNER JOIN OrderList tb ON tb.orderCode = hk.orderCode
            GROUP BY tb.userInfoId
          
  1. hk.backMoney这个字段会显示的是最大的hk.backTime对应的数据吗?

  2. 多个字段使用聚合函数之后,如果没有对其它的字段进行分组,这时候只有一条,其他字段是怎么取的.?

阅读 5.3k
1 个回答

hk.backMoney这个字段会显示的是最大的hk.backTime对应的数据吗?

因为你用了 Group By 所以显示的是同一个 userInfoId 下最大的那个 hk.backTime

多个字段使用聚合函数之后,如果没有对其它的字段进行分组,这时候只有一条,其他字段是怎么取的?

其他的字段的取法和你使用的数据库具体实现相关,可能是默认排序,也有可能是随机返回,所以一般来说在聚合查询中, Select 非聚合字段没有意义。如果想要实现类似取出某个用户最近的一条操作记录的话,那么就需要在外面再包一层查询语句。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题