组中的MAX应该检索整行数据

时间:2017-10-02 09:38:09

标签: mysql group-by aggregate-functions

我有一堆sql列要检索。这是我的SQL语句:

     SELECT b.iposx_model_id,
             a.mrModel, MAX(a.mrRevision) as mrRevision, a.mrApprovedBy, ...
      FROM mydb1.tbl_model_revision a
     INNER JOIN  mydb2.model_from_revision_process b 
             ON b.mrModel = a.mrModel 
     WHERE a.mrType = 1
     GROUP BY a.mrModel
     ORDER BY b.iposx_model_id ASC

在我检索到的某个mrModel列上,这些是我查询的数据:

enter image description here

在我的查询中,它声明我应该使用Max mrRevision获取与第三行对应的数据。

然而,在运行sql语句时,我得到了来自第三行的max mrRevision,它是2。但我获得的其他列数据来自第二行,一个例子是mrApprovedBy,它是1035而不是10.为什么会发生这种情况?

1 个答案:

答案 0 :(得分:0)

仅用于参与aggegation函数的列的一部分的use group是select子句 因为工作产生了不可预测的结果而在SQL中被删除了

在大多数数据库和最新版本的mysql中,不允许使用group by

用于获取与最大值对应的行,您可以对匹配正确内容的值使用连接

SELECT 
    b.iposx_model_id
    , a.mrModel
    , t.mrRevision
    , a.mrApprovedBy
    , ...
FROM mydb1.tbl_model_revision a
 JOIN ( 
select  mrModel, MAX(mrRevision) as mrRevision
from mydb1.tbl_model_revision
GROUP BY a.mrModel 
) t on a.mrModel = t.mrModel and a.mrRevision = t.mrRevision
 JOIN mydb2.model_from_revision_process b ON b.mrModel = a.mrModel 
WHERE a.mrType = 1
ORDER BY b.iposx_model_id ASC