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表,还是有另一种方法可以实现此目的?
我正在通过列列表中的嵌套查询来放置数据,以便在那里干净地获取联系人数据.
我认为有一个完整结果集的子查询会更简单:
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但它没有相关性.
| 归档时间: |
|
| 查看次数: |
4692 次 |
| 最近记录: |