我在mySQL DB中的数据如下所示(但不仅是这4个,我还有很多人多次出现,但具有不同的资格和不同的修改日期

选择应该是这样的:
SELECT * FROM table where person_id=1 GROUP BY person_id所以,如果我做出这个选择,并按person_id分组,我会得到如下结果:

有没有可能按person id分组,而是说:好的,给我最后修改的资格?通常,where SQL语句中没有person_id。
所以我想要我选择的所有人,但只想要具有最后修改的资格的结果
(我希望我解释得很好,这样你就能理解问题是什么了)
(我的选择当然比我展示的复杂得多,这只是为了向你展示我正在做的事情)
发布于 2013-04-19 18:25:09
您还可以使用子查询返回每个person_id的max修改日期,然后将该结果连接到您的表,以获得具有最大日期的行:
select t1.id,
t1.person_id,
t1.name,
t1.qualification,
t1.created,
t1.modified,
t1.version
from yourtable t1
inner join
(
select person_id, max(modified) MaxMod
from yourtable
group by person_id
) t2
on t1.person_id = t2.person_d
and t1.modified = t2.maxmod发布于 2013-04-19 18:19:06
如果您想要某个特定人员的最后修改条目,那么只需执行以下操作
select * from table
where person_id = 1
order by modified desc
limit 1发布于 2013-04-19 18:19:35
编辑
我误解了问题,我会更新答案
试试这个(假设您想要每个人员的最后修改的资格):
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
)https://stackoverflow.com/questions/16102292
复制相似问题