从mysql表中选择特定行

2021-12-19 00:00:00 select mysql row-number

理想情况下,我需要一个等价于

Ideally I need a query that is equivalent to

select * from customer where row_number() = 3

但这是非法的.

我不能使用自动递增的字段.

row_number() 是需要选择的行.

row_number() is the row that needs to be selected.

我该怎么做?

嗯,我用 iSql*plus 来练习,使用 limit 和 auto_increment 出于某种原因是非法的.我最终创建了一个序列和一个触发器,并在每次有条目时将 id 增加 1.

Well, I use iSql*plus to practice, and using limit and auto_increment is illegal for some reason. I ended up creating a sequence and a trigger and just upped the id by 1 every time there was an entry.

推荐答案

您可以使用 LIMIT 2,1 而不是 WHERE row_number() = 3.

You can use LIMIT 2,1 instead of WHERE row_number() = 3.

正如文档所解释的那样,第一个参数指定了要返回的第一行,第二行指定要返回的最大行数.

请记住,它是一个基于 0 的索引.所以,如果你想要行号 n,第一个参数应该是 n-1.第二个参数总是 1,因为你只需要一行.例如,如果您想要customer 表的行号56:

Keep in mind that it's an 0-based index. So, if you want the line number n, the first argument should be n-1. The second argument will always be 1, because you just want one row. For example, if you want the line number 56 of a table customer:

SELECT * FROM customer LIMIT 55,1

相关文章