我正在编写一个程序,从数据库中选择公司列表并在API上返回它们。结果以25为增量进行分页。查询本身从我的公司表中选择所有数据,然后在链接表上进行左连接以获得与该公司关联的代表列表。问题是,它只返回25行,而左连接可能会导致选择25家公司需要更多行。如何修改我的查询以选择前25个公司,而不是前25行。
SELECT
[dbo].[ClientAccounts].*,
[dbo].[AccountLink].[RepId]
FROM [dbo].[ClientAccounts]
LEFT JOIN [dbo].[AccountLink] ON [dbo].[AccountLink].[AccountID] = [dbo].[ClientAccounts].[ID]
WHERE [dbo].[ClientAccounts].[ClientID] = 10
ORDER BY [dbo].[ClientAccounts].[ID] ASC
OFFSET 0 ROWS
FETCH NEXT 25 ROWS ONLY
答案 0 :(得分:1)
一种方法是首先收集25行,然后再将它们连接起来。
您可以尝试这样的事情:
WITH accounts AS (
SELECT * FROM [dbo].[ClientAccounts]
ORDER BY [dbo].[ClientAccounts].[ID] ASC
OFFSET 0 ROWS
FETCH NEXT 25 ROWS ONLY
)
SELECT
accounts.*,
[dbo].[AccountLink].[RepId]
FROM accounts
LEFT JOIN [dbo].[AccountLink] ON [dbo].[AccountLink].[AccountID] =
[dbo].[ClientAccounts].[ID]
请记住,自MS SQL Server 2008以来,Microsoft支持CTE(公用表表达式)。