我对具有两个嵌套查询的过程的主要级别使用以下查询。
查询有效并选择了正确的数据,我唯一的问题是我只需要TOP 1
基于JOIN
的{{1}}记录。
我在Google上发现了一些关于这方面的帖子,方法截然不同,并且不确定哪一个是正确的。示例来源:How do I limit a LEFT JOIN to the 1st result in SQL Server?
我喜欢在左连接中包含内连接的方式,但不确定这是否有意义以及如何在此处应用它。 有人能告诉我什么是最好/最简单的方法以及如何在这里应用它?
我的SQL:
ORDER BY modTime desc
非常感谢提供任何帮助,蒂姆。
答案 0 :(得分:2)
使用交叉申请或外部申请
SELECT *
FROM MOC_Links A
OUTER APPLY
(SELECT TOP 1 *
FROM MOC_Log AS D
WHERE D.itemID = A.itemID
ORDER BY D.modTime DESC) D
答案 1 :(得分:0)
试试这个,
select top A.itemID,
COALESCE(A.parentID, '999999'),
A.itemName,
A.linkRef,
A.sortID,
COUNT(*) OVER() AS volume,
D.lastUpdate,
CONVERT(VARCHAR(11), D.modTime, 106) AS modTime,
D.modBy,
'---' AS levelSub,(select top 1 ColumnName from Table) FROM MOC_Links A
LEFT JOIN MOC_Log D
ON D.itemID = A.itemID
WHERE A.parentID = '1'
ORDER BY A.itemName
FOR XML PATH('level1'), ELEMENTS, TYPE, ROOT('ranks')