[英]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.