首页 > 解决方案 > 如何解决“没有为'r'的第1列指定列”

问题描述

我的 SQL 查询是

select *
from (
    select rtrim(Emp.s_filterh)
    from Emp, Dept
    where Dept.label = 'xyz' and Emp.filtery = 1 and Emp.r_id = Dept.r_id  
    order by 1 desc offset 0 rows
) as r
where ROW_NUMBER() < 26

当我运行这个时,我得到

没有为“r”的第 1 列指定任何列

当我读到我们应该提供别名的错误时,但在我的情况下,即使在提供别名查询之后也会引发错误。

编辑:我正在尝试使用 ROW_NUMBER() 来限制获取的行数。

有人可以让我知道出了什么问题

标签: sqlsql-server

解决方案


如果要用于ROW_NUMBER检索前 26 行,请使用以下语法:

SELECT *
FROM
(
    SELECT *, RTRIM(Emp.s_filterh),
              ROW_NUMBER() OVER (ORDER BY RTRIM(Emp.s_filterh) DESC) rn
    FROM Emp e
    INNER JOIN Dept e ON d.r_id = e.r_id
    WHERE d.label = 'xyz' AND e.filtery = 1
) t
WHERE rn < 26;

推荐阅读