mysql - MySQL Select with MAX() 和 GROUP BY 返回正确的最大结果但不正确的 id
问题描述
这是我的桌子
CREATE TABLE `capacity_log` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`date_occurred` DATETIME NOT NULL,
`ip_address` VARCHAR(255) NOT NULL DEFAULT '',
`order_product_id` INT UNSIGNED NOT NULL,
`serial` VARCHAR(255) NOT NULL DEFAULT '',
`used_capacity` BIGINT NULL DEFAULT NULL,
`aux2` INT NULL DEFAULT NULL,
`request` BLOB NULL,
`retry_count` INT NOT NULL DEFAULT '0',
`fetch_time` INT NOT NULL DEFAULT '0',
`response` BLOB NULL,
`custom_fetch_time` INT NOT NULL DEFAULT '0',
PRIMARY KEY (`id`))
通过执行查询,我想获取每个 order_product_id 每周的行 ID 和最大使用容量。请求返回正确的最大容量,但没有返回正确的 id。
SELECT c.id, MAX(c.used_capacity) AS `max_capacity`
FROM capacity_log c
WHERE c.date_occurred < '2020-10-1' AND c.aux2 IS NULL
GROUP BY
YEAR(c.date_occurred), WEEK(c.date_occurred),
c.order_product_id
解决方案
您可以使用
SELECT c.id, c.used_capacity
FROM capacity_log c
WHERE max_capacity = (
SELECT MAX(c.used_capacity) AS `max_capacity`
FROM capacity_log c
WHERE c.date_occurred < '2020-10-1'
AND c.aux2 IS NULL
GROUP
BY YEAR(c.date_occurred)
, WEEK(c.date_occurred)
, c.order_product_id)
推荐阅读
- java - Android Studio - 某些功能无法正常工作
- java - Spring Boot:根据用户角色自定义 API 响应
- javascript - jQuery & HTML 数据属性操作,真正尝试修改/附加一个新值到已经添加的值
- mysql - 如何使用公司和代理的规范获取 mysql 的特定行数据
- javascript - 防止类型注释类型扩大 const 表达式
- python - python + 通过python脚本运行复杂的shell命令
- php - 使用 php-enqueue 生成 avro 消息
- docker - 我如何使用一个 YAML 部署两台服务器,其中一台依赖于 Kubernetes 中的另一台
- node.js - 如何获取我的 mongodb 数据库的确切 IP 地址?
- sql - 根据另一列Sql Server中给出的公式更新表中的列