繁体   English   中英

MySQL:MAX不返回

[英]MySQL: MAX not returning

如何获得按最大列排序并按ID分组的行的列表? 我一直在获取正确的最大值,但其他字段是从其他行获取的。

我正在使用以下内容:

SELECT p.*
            FROM `logs` AS p
            JOIN
            (SELECT person_id,
             MAX(`datetime`) AS datetime
             FROM `logs`
             GROUP BY `person_id`
             ) AS pg
             ON  pg.person_id = p.person_id
             AND pg.`datetime` = p.datetime
             group by person_id

我的查询错在哪里? 日期时间和人员ID始终正确,但其他字段不正确。

SELECT MIN(datetime)并不总是返回最小datetime值。 与MAX相同。

临时解决方法:

        SELECT p.*
        FROM   `logs` AS p
        JOIN
              (SELECT person_id,
                      MAX(CAST(`datetime` as CHAR(25))) AS `datetime`
               FROM `logs`
               GROUP BY `person_id`
               ) AS pg
                   ON  pg.person_id = p.person_id AND
              pg.`datetime` = p.datetime
         group by person_id

请尝试以下方法:

SELECT logs.* 
  FROM ( SELECT person_id,
             MAX(`datetime`) AS latest
             FROM `logs` 
         GROUP BY person_id) AS dt
INNER
  JOIN logs 
    ON logs.person_id= dt.person_id
   AND logs.datetime= dt.latest       

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM