[英]Paging in sql server for top level query
在 sql 服務器中,我有一個 Employee 表和一個 Address 表。
一個員工可以有多個地址。
我想獲取前 10 名員工及其地址。
SELECT *
FROM
Employee e
LEFT JOIN Address a ON a.EmployeeID = e.Id
WHERE
a.Street LIKE '%a%'
AND e.Name LIKE '%bob%'
ORDER BY e.Id
OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY
如果每個員工都有 2 個與之關聯的地址,我將得到 10 行但只有 5 個員工。
如何獲得我想要的 10 名員工?
您可以使用dense_rank()
:
SELECT ea.*
FROM (SELECT e.*, a.*, -- should select the columns you really need
DENSE_RANK() OVER (ORDER BY e.id) as seqnum
FROM Employee e JOIN
Address a
ON a.EmployeeID = e.Id
WHERE a.Street LIKE '%a%' AND e.Name LIKE '%bob%'
) ea
WHERE seqnum <= 10
ORDER BY e.Id ;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.