Mysql 如何获取SQL中三个联接中第二个联接的最后一条记录
我有以下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
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