我正在开发一个Web应用程序,并且我有一个包含两个表的数据库。其中一个称为实体,另一个称为活动。这是一对多关系,其中活动表中有许多实体。活动表有一个与之关联的日期,我想根据某些实体ID提取结果,但我只想提取最近的活动(按日期)。因此,基本上,我只希望每个实体一次退货。必须有一种方法可以在mysql中执行此操作,而不用php解析数据。我想使应用程序尽快。任何帮助将不胜感激。
最佳答案
猜测字段名称...
SELECT
e.*, a.*
FROM
(SELECT
MAX(ActivityID) ActivityID,
EntityID
FROM
Activity
GROUP By
EntityID) maxActivity
INNER JOIN Activity a
ON maxActivity.ActivityID = a.ActivityID
INNER JOIN Entity e
ON e.EntityID = a.EntityID
或者,如果ID并非总是最新的并且您确实想要日期(假设两个活动不能共享同一日期)
SELECT
e.*, a.*
FROM
(SELECT
MAX(Date) Date,
EntityID
FROM
Activity
GROUP By
EntityID) maxActivity
INNER JOIN Activity a
ON maxActivity.Date = a.Date
and maxActivity.EntityID = a.EntityID
INNER JOIN Entity e
ON e.EntityID = a.EntityID