【问题标题】:How to Select master table data and select referance table top one data sql query如何选择主表数据并选择参考表顶部一数据sql查询
【发布时间】:2013-04-04 10:06:34
【问题描述】:

我需要一个 sql 查询,它应该返回主表条目及其子表条目(仅最新的一个条目)。我为此使用了内部连接。但我它不能正常工作。 任何人都可以给我一个适当的查询

提前致谢

【问题讨论】:

  • 请参考给定的链接,它可能对您有用stackoverflow.com/questions/6972286/…
  • 子表中的哪一列排序?
  • 我需要选择主表中的所有条目,并且需要选择其子条目(根据 createdDate 顶部)

标签: sql stored-procedures inner-join


【解决方案1】:

在 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

【讨论】:

【解决方案2】:

试试这个,

SELECT ID, DATE
(
SELECT M.ID, C.DATE, ROW_NUMBER() OVER(PARTITION BY M.ID ORDER BY C.DATE DESC) RN
FROM MASTER M
JOIN CHILD C
ON C.ID = M.ID
) A
WHERE RN = 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-08
    • 2012-11-05
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多