mysql - SQL:Group By 记录不匹配

标签 mysql sql group-by greatest-n-per-group

我正在尝试获得组内的最高版本。我的查询:

SELECT 
    rubric_id, 
    max(version) as version,
    group_id
FROM    
    rubrics
WHERE
   client_id = 1 
GROUP BY
    group_id

数据:

enter image description here

结果:

enter image description here

ID 2 的标题没有版本 2,为什么会不匹配?我需要做什么来纠正这个问题?

编辑,而非重复:

这不是 SQL Select only rows with Max Value on a Column 的重复,ojit_a 是我在写这篇文章之前阅读和引用的帖子。我的问题是不是如何找到最大值,我的问题是为什么版本与正确的ID不匹配>

最佳答案

MySQL 让您感到困惑,因为您可以在选择中包含不在分组依据中的列。要解决此问题,请确保您没有选择分组依据之外的任何字段。

您不需要尝试在一条语句中获取所有内容,而是需要使用子查询来查找 max_version_id,然后加入它。

SELECT T.*
FROM rubrics T
JOIN
(
    SELECT 
        group_id, 
        max(version) as max_version
    FROM    
        rubrics
    GROUP BY
        group_id
) dedupe
 on T.group_id = dedupe.group_id
and T.version_id = dedupe.max_version_id
WHERE
    T.client_id = 1 

关于mysql - SQL:Group By 记录不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40922735/

相关文章:

PHP 无法添加或更新子字段 - 外键错误

java - SQL 不同的多列

PHP MySQL Count查询结果是字符串,不是整数

sql - 按不在选择中的字段分组

mysql对一张表中的多行进行分组

MySQL:如何优化这个查询?按年(日期)计算 SUM

mysql - SQL - 无法使用多个聚合函数结果过滤表

MySQL 具有 SUM(column1) <> column2 不起作用

HQL 中的 MySQL 匹配

sql - 如何从 ADO 查询中获取记录数?