首页 > 解决方案 > MSSQL 从行之间指定的 2 个连接表中选择条目

问题描述

我的服务器上有 2 个表。一种是存储文件信息(根、名称、用户 ID、大小..),另一种是存储每个用户 ID 的电子邮件地址。

我想选择 2 个指定行之间的所有条目(例如,按表 1 中的文件大小排序)

我的代码:

select TOP 16 * from 
(
select Row_Number() over (order by [Table1].[File Size]) as RowIndex,
* from (SELECT Table1.*,Table2.[E-Mail]
FROM Table1 LEFT JOIN Table2 ON Table1.UserID = Table2.UserID 
ORDER BY Table1.[File Size])as joined
) 
as Sub
Where Sub.RowIndex >= 20

例如,从 JOIN Order by 中选择第 20 行之后的前 16 个条目File Size

错误:

ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效,除非还指定了 TOP、OFFSET 或 FOR XML。

我能做些什么?此查询用于显示 C# 的虚拟化 datagridview 的超过 100k 个条目的前 16 个条目。

标签: c#sqlsql-server

解决方案


ORDER BY Table1.[File Size]从内部查询中删除

select TOP 16 * from 
(
select Row_Number() over (order by [Table1].[File Size]) as RowIndex,
* from (SELECT Table1.*,Table2.[E-Mail]
FROM Table1 LEFT JOIN Table2 ON Table1.UserID = Table2.UserID 
)as joined
) 
as Sub
Where Sub.RowIndex >= 20
ORDER BY Table1.[File Size]

推荐阅读