SQL Server SELECT 与 JOIN 分页

标签 sql sql-server select join

我正在从表中进行选择,并使用多对一关系进行左连接。

我要解决的问题是分页。我只想对 tableA 进行分页。

示例:

SELECT * 
FROM tableA 
[WHERE HERE] OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY

这将返回 tableA 的第 0 - 9 行。 完美

现在的问题是当我引入连接时。我仍然想要 tableA 的第 1-10 行,但是当我进行连接时,它会按预期引入额外的行,因为 tableB 将有多个条目与每个 tableA 行连接。所以现在我不再从 tableA 中获取相同的行,我可能只获取前 2 行,但由于连接而总共有 10 行。

SELECT * 
FROM tableA 
LEFT JOIN tableB ON foo = bar 
[WHERE HERE] OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY

我想返回与连接产生的行数一样多的行,但仅限于表 A 的 0-9(或 10-19)

澄清一下,每个 tableA 行都有多个 tableB 行。我只想根据 tableA 进行选择和分页,但仍然返回 tableB 上所有联接的条目。

最佳答案

在这种情况下您可以使用内部查询

SELECT *
   FROM (
   SELECT * FROM tableA [WHERE HERE] OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY
   ) q
JOIN tableB on foo = bar [WHERE HERE]

关于SQL Server SELECT 与 JOIN 分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25897533/

相关文章:

mysql - 一个复合索引还是多个外键索引?

c# - SqlFileStream - 插入而不产生空文件

sql - Oracle Insert 通过从多个表中选择,其中一个表可能没有一行

mysql - 复杂的MySQL查询问题

sql - MySQL - 根据键/值表中的 2 个键连接表

sql - 分组 PostgreSQL 运行总结果

mysql - 子查询只返回一个值

java - ou 不是 ResultSet - 6.x 版本和 Hibernate 的 MS SQL 驱动程序问题

c# - 动态 T-SQL 的 .NET 错误

HTML , CSS , 下拉箭头 , 选择