首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不改变sql_mode就能得到和吗?

不改变sql_mode就能得到和吗?
EN

Stack Overflow用户
提问于 2019-12-19 04:32:48
回答 1查看 48关注 0票数 1

使用join语句从多个表中获取SUM值有问题。错误是:

这与sql_mode=only_full_group_by不兼容。

不改变sql_mode就能得到和吗?如果可能的话,如何做出SQL语句?

fuel**:**

代码语言:javascript
复制
vehicle_id | liter
-----------+-----------
         2 | 43.5
         4 | 78.3
         8 | 20.5

usage**:**

代码语言:javascript
复制
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语句如下:

代码语言:javascript
复制
SELECT fuel.vehicle_id, SUM(fuel.liter), usage.date_usage
FROM fuel
LEFT JOIN usage ON fuel.vehicle_id = usage.vehicle_id
WHERE fuel.vehicle_id='8'
AND usage.date_usage >='2019-10-01' AND usage.date_usage <='2019-10-31'
GROUP BY fuel.vehicle_id
EN

回答 1

Stack Overflow用户

发布于 2019-12-19 14:22:49

解决这个问题有两种可能性:

  • usage.date_usage中删除列SELECT
  • 在列聚合函数上也使用usage.date_usage
    • MAX以获得列的最高值。
    • 获取列的最低值的MIN
    • ANY_VALUE来获取列的任何值。

因此,您的查询可以如下所示(在usage.date_usage列上使用usage.date_usage):

代码语言:javascript
复制
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

基于dbfiddle.uk的演示

注意:在MySQL中要小心地使用像usage这样的单词作为标识符(例如表名和列名)。有一些关键词与保留词,你应该避免或引用背。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59403334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档