Sea*_*256 6 sql sql-server select join
我正在从一张桌子中选择一个与多对一关系进行左联接.
我要解决的问题是分页.我只想在tableA上进行分页.
例:
SELECT *
FROM tableA
[WHERE HERE] OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY
Run Code Online (Sandbox Code Playgroud)
这将返回tableA的第0-9行.完美.
现在问题出在我引入连接的时候.我仍然希望tableA的行1-10,但是当我进行连接时,它会按预期引入额外的行,因为tableB将有多个条目连接到每个tableA行.所以现在我不再从tableA获得相同的行,我可能只获得前两行但由于连接而总共有10行.
SELECT *
FROM tableA
LEFT JOIN tableB ON foo = bar
[WHERE HERE] OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY
Run Code Online (Sandbox Code Playgroud)
我希望返回连接产生的行数,但仅限于tableA的0-9(或10-19)
为了澄清,每个tableA行有多个tableB行.我想仅基于tableA选择和页面,但仍然返回tableB上所有连接的条目.
小智 5
在这种情况下,您可以使用内部查询
SELECT *
FROM (
SELECT * FROM tableA [WHERE HERE] OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY
) q
JOIN tableB on foo = bar [WHERE HERE]
Run Code Online (Sandbox Code Playgroud)