我的mySQL数据库中的数据看起来像这样(但不仅仅是这4个,我有很多人出现的时间超过一次,但具有不同的资格和不同的修改日期
选择类似于:
SELECT * FROM table where person_id=1 GROUP BY person_id
所以,如果我做出这个选择并且我按person_id分组,我会得到这样的结果:
是否有可能按人员ID分组,但要说:好的,给我最后修改的资格?通常我在SQL语句中没有person_id
所以我希望所有人都从我的选择,但只有最后修改资格的结果
(我希望我能很好地解释它,所以你明白问题是什么)
(我的选择当然比我展示的那个复杂得多,这只是为了向你展示我正在做的事情)
答案 0 :(得分:3)
您还可以使用子查询返回每个max
的{{1}}修改日期,然后将该结果加入到您的表中以获取具有最大日期的行:
person_id
答案 1 :(得分:0)
如果您想要特定人员的最后修改条目,那么只需执行
select * from table
where person_id = 1
order by modified desc
limit 1
答案 2 :(得分:0)
修改强>
我误解了这个问题,我会更新答案
尝试此操作(假设您希望每个人员的最后修改资格):
SELECT
person_id,
qualification
FROM
table as a
INNER JOIN (
SELECT
person_id,
MAX(modified) as za_date
FROM
table
GROUP BY
person_id
) as tmp
ON a.person_id = tmp.person_id
AND a.modified = tmp.za_date
如果您想要所有人员的最后修改资格:
SELECT
qualification
FROM
table
WHERE modified = (
SELECT
MAX(modified)
FROM
table
)