我正在开发一个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

10-07 12:37