我知道我可以使用以下语法从子查询中选择一列:
SELECT A.SalesOrderID, A.OrderDate,
(
SELECT TOP 1 B.Foo
FROM B
WHERE A.SalesOrderID = B.SalesOrderID
) AS FooFromB
FROM A
WHERE A.Date BETWEEN '2000-1-4' AND '2010-1-4'
Run Code Online (Sandbox Code Playgroud)
但是使用子查询中的多个列的正确语法是什么(在我的例子中是select top 1子查询)?非常感谢你.
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表,还是有另一种方法可以实现此目的?
我正在通过列列表中的嵌套查询来放置数据,以便在那里干净地获取联系人数据.