【发布时间】:2010-11-27 04:38:18
【问题描述】:
我使用的是 SQL Server 2008,并且我有以下 SQL 脚本:
Select o.CustomerId as CustomerNoId, OrderValue, OrderDate
From dbo.Orders as o
Inner Join (
Select Top (10) CustomerId
From dbo.Customers
where Age < 60
)
As c
On c.CustomerId = o.CustomerId
当与本地 SQL Server 实例上的 dbo.Customers 和 dbo.Orders 一起使用时,这可以正常工作。它返回从 Customers 表返回的前 10 个 customerIds 从 orders 表中的所有行 - 1688 行。
但是,我有一个链接服务器,其中包含包含更多行的客户和订单表。当我修改脚本以使用链接服务器中的 dbo.Orders 和 dbo.Customers 表时,我得到了一个奇怪的结果 - 似乎返回了正确的数据,但只有前 10 行。
我不是 SQL 专家,所以我无法弄清楚为什么它的行为会有所不同。
任何建议表示赞赏。
【问题讨论】:
-
所以你的开发环境中customers表有1688行,有多少个订单?
-
只是一个评论,因为我真的不认为这是问题所在,但是链接数据库上的 OrderID 是否可能不匹配?
-
您正在执行并链接到的 SQL Server 的版本和版本是什么?
-
@Bryan S - 我希望查询返回 Top(10) 客户的所有订单。在开发环境中,有 1688 个订单属于 Top(10) 客户,客户表中有 50 行,订单表中有 20213 行。
-
@RBarryYoung - 两者的 Sql 版本相同:10.0.1600.22。开发机器在 Service Pack 1 上。链接服务器是 Service Pack 2...
标签: sql sql-server tsql sql-server-2008 linked-server