php - 从 mysql 中的一对多连接中提取最新结果

标签 php sql mysql

我正在开发一个网络应用程序,我有一个包含两个表的数据库。其中之一称为实体,另一个称为事件。它是一对多关系,其中事件表中有许多实体。事件表有一个与之关联的日期,我想根据某些实体 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 

关于php - 从 mysql 中的一对多连接中提取最新结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4888834/

相关文章:

php - 如何选择单个或多个复选框按钮?

php - laravel 如何在不包含类的情况下扩展类

sql - 交叉表查询提供了意外的结果

SQL Server 找不到存储过程 'show'

php - 如何减少 PHP 中的程序执行时间以及如何提高性能

java - Maven 应用程序无法连接到数据库服务器

php - 如何获取 Input::all() 中的数组数据并将其存储为与实际记录的 hasMany() 关系?

php - 交易金额详细信息(小计、税金、运费)必须加起来达到指定的总金额 - PayPal PHP SDK

mysql - SQL 根据其他列的唯一性填充新列

database - mysql根据年份查询总和