Я использую SQL Server 2008 и у меня есть следующий SQL скрипт:Проблема с SQL подзапрос с использованием Top() на Linked Server
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
Это работает, как требуется при использовании dbo.Customers и dbo.Orders на локальный экземпляр SQL Server. Он возвращает все строки из таблицы заказов для первых 10 клиентов, возвращенных из таблицы Customers - 1688 строк.
Однако у меня есть связанный сервер, в котором хранятся таблицы Customers и Orders, содержащие больше других строк. Когда я изменяю скрипт, чтобы использовать таблицы dbo.Orders и dbo.Customers из Linked Server, я получаю странный результат. Кажется, верны правильные данные, но только первые 10 его строк.
Я не эксперт по SQL, поэтому я не могу понять, почему он должен вести себя по-другому.
Любые предложения оценены.
Итак, таблица клиентов имеет 1688 строк в вашей среде dev, сколько заказов есть? –
Просто комментарий, потому что я действительно не ожидаю, что это проблема, но возможно ли, что идентификаторы OrderID в связанной базе данных не совпадают? –
Каковы версии и выпуски SQL Server, на которых вы работаете, и на которые вы ссылаетесь? – RBarryYoung