Mysql 如何获取SQL中三个联接中第二个联接的最后一条记录

Mysql 如何获取SQL中三个联接中第二个联接的最后一条记录,mysql,sql,Mysql,Sql,我有以下SQL语句: Select PD.PKey , PD.PId , PVDR.ProID FROM `TABLE1` PD JOIN `TABLEFACT` FACT ON PD.PId = FACT.PId JOIN `TABLE2` PVDR ON PVDR.ProId = FACT.AProId TABLEFACT有一个日期字段PDATE 如何筛选TABLEFACT,以便在连接到TABLE2之前,返回的唯一联接仅为MAX(PDATE) 假设MYSQ

我有以下SQL语句:

Select
 PD.PKey
 , PD.PId
 , PVDR.ProID
FROM `TABLE1` PD
JOIN `TABLEFACT` FACT
       ON PD.PId = FACT.PId
JOIN `TABLE2` PVDR
       ON PVDR.ProId = FACT.AProId
TABLEFACT
有一个日期字段
PDATE

如何筛选
TABLEFACT
,以便在连接到
TABLE2
之前,返回的唯一联接仅为
MAX(PDATE)

假设MYSQL。多谢


谢谢

您可以使用子查询,也称为派生表,如下所示:

Select
    PD.PKey
  , PD.PId
  , PVDR.ProID
FROM `TABLE1` PD
JOIN (SELECT MAX(PDate) as Pdate, PId
      FROM `TABLEFACT`
      GROUP BY PId
      ) FACT
   ON PD.PId = FACT.PId
JOIN `TABLE2` PVDR
   ON PVDR.ProId = FACT.AProId
这假设您需要每个
PId的
MAX(PDate)

如果只希望返回带有最新
PDate
PId
,则使用普通子查询:

Select
   PD.PKey
 , PD.PId
 , PVDR.ProID
FROM `TABLE1` PD
JOIN `TABLEFACT` FACT
   ON PD.PId = FACT.PId
JOIN `TABLE2` PVDR
   ON PVDR.ProId = FACT.AProId
WHERE FACT.PDate = (SELECT MAX(PDate) FROM `TABLEFACT`)

您可以使用子查询:

Select
 PD.PKey
 , PD.PId
 , PVDR.ProID
FROM `TABLE1` PD
JOIN `TABLEFACT` FACT
       ON PD.PId = FACT.PId
        AND
       FACT.PDATE = (
            SELECT
                MAX(PDATE)
            FROM
                `TABLEFACT`
        )
JOIN `TABLE2` PVDR
       ON PVDR.ProId = FACT.AProId