从mysql表中选择特定行
理想情况下,我需要一个等价于
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
相关文章