Я попытался выполнить разбиение данных на страницы при использовании ROW_NUMBER()
Вот мой запрос:
SELECT * FROM
(SELECT ROW_NUMBER() OVER (ORDER BY OrderID) AS Row,* FROM SpecificOrders)
AS EMP
inner join Users as c on EMP.UserID = c.UserID
inner join Users as u on EMP.CreatedBy = u.UserID
inner join SpecificOrderPayment as p on EMP.OrderID= p.OrderID
WHERE Row BETWEEN 0 AND 10
Когда я выполняю этот запрос, я получаю следующий результат:
Row | OrderID | UserID |
1 | | |
5 | | |
6 | | |
7 | | |
8 | | |
9 | | |
10 | | |
Если я удалю это WHERE Row BETWEEN 0 AND 10
условие, мне будут предоставлены все записи
Здесь мой вопрос: почему я получаю только 7 строк и почему здесь 2,3 и 4 отсутствуют в столбце строки.
Более того, если я удалю третий запрос на соединение (SpecificOrderPayment
), он даст мне правильный результат.
SpecificOrderPayment
нет совпадающих записей для упомянутых вами случаев. Попробуйте использоватьLEFT
вместоINNER
join. - person Giorgos Betsos   schedule 14.09.2016