查询A表所有的数据,
A表字段有 ID,Name
A表与B表的FK_AID关联,A表与B表是一对多的关系
B表字段有,ID,FK_AID,URL,UpdatDate
需要查询A表数据时查询B表的最后更新的一条数据
------解决思路----------------------
两表关联然后用max来过滤
------解决思路----------------------
SELECT *
FROM A
OUTER APPLY (SELECT TOP 1 *
FROM B
WHERE B.FK_AID = A.ID
ORDER BY UpdateDate DESC) B1
------解决思路----------------------
SELECT
*
FROM
A LEFT JOIN
(SELECT ROW_NUMBER()OVER(PARTITION BY FK_AID ORDER BY UpdatDate DESC)RN,* FROM B)T
ON A.ID=T.FK_AID AND T.RN=1
------解决思路----------------------
这个是开窗函数的东西~~
开窗函数的 OVER 关键字后括号中的可以使用 PARTITION BY 子句来定义行的分区来供进行聚合计算。与 GROUP BY 子句不同,PARTITION BY 子句创建的分区是独立于结果集的,创建的分区只是供进行聚合计算的,而且不同的开窗函数所创建的分区也不互相影响。