是否可以在不更改sql_mode的情况下获得总和?如果可能,以及如何对语句进行编码?

问题描述 投票:1回答:1

我在使用join语句从多个表中获取SUM值时遇到问题。错误为“ 这与sql_mode = only_full_group_by不兼容”。是否可以在不更改sql_mode的情况下获得总和?如果可能,如何使sql语句执行?

餐桌燃料

vehicle_id |


  2        |   43.5
  4        |   78.3
  8        |   20.5

表格使用情况

date_usage | vehicle_id


2019-10-01    |  8
2019-10-15    |  2
2019-10-20    |  8
2019-10-20    |  4
2019-11-02    |  8

sql语句如下:

SELECT fuel.vehicle_id,SUM(fuel.liter),usage.date_usage从燃料LEFT JOIN用法为fuel.vehicle_id = usage.vehicle_id在哪里fuel.vehicle_id ='8'AND用法.date_usage> ='2019-10-01'AND用法.date_usage <='2019-10-31'GROUP BY fuel.vehicle_id

mysql sql aggregate-functions sql-mode
1个回答
0
投票

usage.date_usage中删除列SELECT

    也在aggregate function列上使用usage.date_usage
  • MAX以获取列的最大值。
    • MIN获得该列的最小值。
    • [ANY_VALUE以获取列的任何值。
  • 所以您的队列看起来可能如下所示:
  • ANY_VALUE

    SELECT fuel.vehicle_id, SUM(fuel.liter), MAX(`usage`.date_usage) FROM fuel LEFT JOIN `usage` ON fuel.vehicle_id = `usage`.vehicle_id WHERE fuel.vehicle_id = 8 AND `usage`.date_usage BETWEEN '2019-10-01' AND '2019-10-31' GROUP BY fuel.vehicle_id

    注意:在MySQL中使用demo on dbfiddle.uk之类的单词作为标识符要小心。您应该避免usage或至少要逃脱(带有反引号)。

  • © www.soinside.com 2019 - 2024. All rights reserved.