加入T-SQL中的顶级记录

JBo*_*one 5 sql t-sql join

SELECT MD.*, Contact.FirstName 
FROM MerchantData MD
JOIN Merchant M ON M.MerchID = MD.MerchID   
JOIN (SELECT TOP 1 * FROM Location WHERE Location.BusID = MD.BusID) L ON L.BusID=MD.BusID
AND L.Deleted = 0
JOIN Contact ON Contact.ContactID = L.PrincipalID
Run Code Online (Sandbox Code Playgroud)

我正在使用SQLSERVER 2008并尝试编写此SQL语句.有时候busid有多个位置,我想只加入第一个找到的位置.我在"Location.BusID = MD.BusID"部分收到错误,因为MD.BusID无法绑定.是否可以在此联接中的嵌套选择语句中使用MD表,还是有另一种方法可以实现此目的?

我正在通过列列表中的嵌套查询来放置数据,以便在那里干净地获取联系人数据.

JNK*_*JNK 9

我认为有一个完整结果集的子查询会更简单:

SELECT MD.*, Contact.FirstName 
FROM MerchantData MD
JOIN Merchant M ON M.MerchID = MD.MerchID   
JOIN (SELECT BusID, MAX(PrincipalID)
      FROM Location
      WHERE Deleted = 0
      GROUP BY BusID) L ON L.BusID=MD.BusID
JOIN Contact ON Contact.ContactID = L.PrincipalID
Run Code Online (Sandbox Code Playgroud)

你仍然可以获得一个记录BusID,JOIN但它没有相关性.