首页 > 解决方案 > 在 MySQL 中按数字选择行

问题描述

我想从与特定行号匹配的表的行中选择所有字段。这听起来很简单,但我无法从在线文档中找出语法。(我不想自己计算行数或使用变量来计算角色)。像这样的东西应该工作:

select * from mytable where row_number()=2

我能找到的最简单的例子(例如:在此处输入链接描述)使用 OVER 子句,所以我尝试了类似的东西:

SELECT 
    ROW_NUMBER() OVER (
        ORDER BY REFNUM
    ) *
FROM 
    MYTABLE
WHERE
    ROW_NUMBER() =2

但仍然不是有效的语法。

标签: mysqlselectrow-number

解决方案


您需要为ROW_NUMBER()表达式分配一个别名,然后对其进行测试。

SELECT ROW_NUMBER() OVER (ORDER BY REFNUM) AS row, *
FROM YourTable
HAVING row = 2

这本质上是一样的

SELECT *
FROM YourTable
ORDER BY REFNUM
LIMIT 1, 1

LIMIT从 开始计数0,而ROW_NUMBER()从开始计数1,因此 中的偏移LIMIT量少 1。


推荐阅读