我需要一个sql查询,该查询应返回主表项及其子表项(仅最新的一项)。我为此使用了内部联接。但我不能正常工作。
谁能给我一个适当的查询

提前致谢

最佳答案

在SQLServer2005 +中,使用OUTER APPLY运算符使用选项

SELECT *
FROM master t1 OUTER APPLY (
                            SELECT TOP 1 t2.Col1, t2.Col2 ...
                            FROM child t2
                            WHERE t1.Id = t2.Id
                            ORDER BY t2.CreatedDate DESC
                            ) o


带有CTEROW_NUMBER()排名功能的OR选项

;WITH cte AS
 (
  SELECT *,
         ROW_NUMBER() OVER(PARTITION BY t1.Id ORDER BY t2.CreatedDate DESC) AS rn
  FROM master t1 JOIN child t2 ON t1.Id = t2.Id
  )
  SELECT *
  FROM cte
  WHERE rn = 1

关于sql - 如何选择主表数据并选择引用表的前一个数据sql查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15808243/

10-16 18:48