我在使用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
从usage.date_usage
中删除列SELECT
。
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
或至少要逃脱(带有反引号)。