获取第一个表上的行而不是左侧联接的结果集

时间:2016-08-04 14:34:33

标签: sql-server sql-server-2008

我有两张桌子。

TableA

  • 编号
  • 第1栏
  • 第2栏

TableB(使用TableA进行n-1映射)

  • 第1栏
  • 第2栏
  • fkToTableAonIdentity

我的查询是

DECLARE @Offset = 0,
DECLARE @pageSize = 10

SELECT 
    A.column1, B.Column1  
FROM 
    TableA AS A 
LEFT JOIN 
    TABLEB AS TABLE B 
ORDER BY  
    B.Column2 DESC
    OFFSET @Offset ROWS 
    FETCH NEXT @PageSize ROWS ONLY 

我试图从tableA加入tableB的数据中获取10行 但查询只返回左连接创建的集合中的10行,但我需要来自table A的10行数据,因此在左连接集中,行数可能因TableA中的每条记录而异。

如何获得所需的结果?

更新

我在我的存储过程中使用上述查询,其中@pageSize将是存储过程的参数。

1 个答案:

答案 0 :(得分:2)

使用以下语法:

SELECT * FROM
(SELECT TOP 10 * FROM Table1) ST1
JOIN Table2 ON ST1.Id=Table2.FkToT1

我希望您的查询看起来如下:

SELECT ST1.Col1, T2.Col1 FROM
(
    SELECT * FROM Table1
    ORDER BY Col1
    OFFSET @offset ROWS
    FETCH NEXT @page ROWS ONLY
) ST1
JOIN Table2 T2 ON ST1.Id=T2.FkToT1