【发布时间】:2016-07-19 14:20:17
【问题描述】:
这是我的用例。我正在尝试加入一个特定的表,该表中可以有多个要加入的记录。
所以,这是我的全部查询,我所说的联接是第一个内部联接:
select top 1
a.IN_Notification_ID,
a.DI_Surrogate_ID,
a.IN_Ref_Content_ID,
a.IN_Name,
a.IN_Description,
a.IN_Category,
a.IN_Rank,
a.IN_Publish_Date,
a.IN_URL_EN,
a.IN_URL_FR,
a.IN_URL_NAME_EN,
a.IN_URL_NAME_FR,
a.IN_HEADER_EN,
a.IN_HEADER_FR,
a.IN_BODY_EN,
a.IN_BODY_FR,
a.IN_ACTION_COMPLETE_URL_EN,
a.IN_ACTION_COMPLETE_URL_FR,
1 as 'IN_COMPLETE',
getdate() as 'ET_LAST_MODIFIED_DATE'
from CXXXXXXX.Important_Notices_Inbox a with (nolock)
inner join CXXXXXXX.IGO_PROFILES b with (nolock) on a.DI_Surrogate_ID = b.email
inner join CXXXXXXX.PI_CONTENTVIEWS c on b.[user_id] = c.[user_id] and a.IN_Ref_Content_ID = c.content_id
where c.[timestamp] > a.[Date_Added]
order by c.[timestamp] desc
因此,您看到的第一个内部联接可以并且可能会返回多条记录(可能有多条记录满足条件 a.DI_Surrogate_ID = b.email)。我想要做的是理想地执行“SELECT TOP 1”/“ORDER BY _CustomObjectKey desc”,以便仅加入具有“最高”_CustomObjectKey 值的记录。我希望这是有道理的。我怎样才能做到这一点?
【问题讨论】:
-
作为旁注,您可能会先阅读这篇文章,然后再继续到处散布 NOLOCK 提示。 blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere
标签: sql sql-server tsql join inner-join