Select 在 MySQL 中按编号排列

Select row by number in MySQL

我想 select 匹配特定行号的 table 行中的所有字段。这听起来很简单,但我无法从在线文档中找出语法。 (我不想自己计算行数或使用变量来计算角色)。这样的事情应该有效:

select * from mytable where row_number()=2

我能找到的最简单的例子(例如:enter link description here)使用 OVER 子句,所以我尝试了类似的东西:

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

但语法仍然无效。

您需要为 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

LIMIT0开始计数,而ROW_NUMBER()1开始计数,所以LIMIT中的偏移量少了1。[=18] =]

实现相同行为的最简单方法是使用限制

SELECT * FROM table LIMIT 1, 1