【发布时间】:2015-12-03 15:52:32
【问题描述】:
我无法获取正确的记录。我的位置表记录了一件设备的位置历史。因此,最新的 date_moved 将是其当前位置。位置表当前包含 2258 条记录(“state_tag”为 FK)。在我的装备表中,我有 2050 件装备,每件装备都有一个唯一的“state_tag”编号 (PK)。所以,我想要的是查询位置表以获取所有设备的当前位置(即 MAX(date_moved)。然后查询应该返回 2050 条记录。
按照上一篇文章的示例,我尝试了以下查询:
SELECT * FROM its_locations WHERE date_moved in (SELECT MAX(date_moved) FROM its_locations GROUP BY state_tag);
但是,当查询应该返回 2050 条记录时,它却返回了 2257 条记录。显然,我的查询完全按照书面要求执行,但不是按照要求执行的(大声笑)。
我还尝试了以下查询,它给了我 2050 条记录,但只返回了每个组的第一条记录,并将组的最大日期插入到该记录中,该记录很可能不是其当前位置。
SELECT state_tag
, MAX(date_moved) AS "Date Moved"
, building
, room
, staff
, comments
FROM its_locations
GROUP BY state_tag;
请帮助我正确查询。
非常感谢。
克里斯
【问题讨论】:
-
你应该用你正在使用的数据库标记问题。
标签: mysql sql subquery max aggregate