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
LIMIT
从0
开始计数,而ROW_NUMBER()
从1
开始计数,所以LIMIT
中的偏移量少了1。[=18] =]
实现相同行为的最简单方法是使用限制
SELECT * FROM table LIMIT 1, 1
我想 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
LIMIT
从0
开始计数,而ROW_NUMBER()
从1
开始计数,所以LIMIT
中的偏移量少了1。[=18] =]
实现相同行为的最简单方法是使用限制
SELECT * FROM table LIMIT 1, 1