首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我想获取表中倒数第二行

问我想获取表中倒数第二行
EN

Stack Overflow用户
提问于 2021-08-05 09:05:41
回答 3查看 50关注 0票数 0

我想要获取表中倒数第二行。通过这个查询,我得到了最后一行,但是我想得到倒数第二行,它的值在max(id)之前。有谁可以帮我?提前感谢

代码语言:javascript
复制
query= "SELECT * from table WHERE id=(select max(id) from table)"

enter image description here

EN

回答 3

Stack Overflow用户

发布于 2021-08-05 09:09:07

依赖于您的RDBMS...

使用LIMIT和OFFSET跳过最后一行

代码语言:javascript
复制
SELECT * 
FROM table
WHERE id = (
    SELECT MAX(id)
    FROM table
    LIMIT 1
    OFFSET 1
)

或者,您可以使用TOP

代码语言:javascript
复制
SELECT TOP 1 * 
FROM (
    SELECT TOP 2 * 
    FROM table ORDER BY id DESC) x                     
ORDER BY id
票数 2
EN

Stack Overflow用户

发布于 2021-08-05 11:03:53

假设行是按id排序的,那么最后一行就是id最大的那一行,那么在标准SQL中,您可以使用:

代码语言:javascript
复制
select t.*
from t
order by t.id desc
offset 1 row fetch first 1 row only;

在不支持offset/fetch的数据库中,通常有类似的方法。

票数 1
EN

Stack Overflow用户

发布于 2021-08-05 16:59:33

您需要使用ORDER BY子句来获取表的倒数第二行:

语法如下所示。

select *from yourColumnName DESC LIMIT 1,1;yourTableName order by select DESC LIMIT 1;

为了理解上面的语法,让我们创建一个表。创建表的查询如下所示。

代码语言:javascript
复制
mysql> create table secondLastDemo
   -> (
   -> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   -> StudentName varchar(10)
   -> );

查询正常,0行受影响(0.52秒)

使用的Insert 命令在表中插入一些记录。

查询如下。

代码语言:javascript
复制
**mysql> insert into secondLastDemo(StudentName) values('Larry');
Query OK, 1 row affected (0.15 sec)**

**mysql> insert into secondLastDemo(StudentName) values('Carol');
Query OK, 1 row affected (0.09 sec)**

**mysql> insert into secondLastDemo(StudentName) values('Bob');
Query OK, 1 row affected (0.10 sec)**

**mysql> insert into secondLastDemo(StudentName) values('Sam');
Query OK, 1 row affected (0.09 sec)**

**mysql> insert into secondLastDemo(StudentName) values('Mike');
Query OK, 1 row affected (0.10 sec)**

**mysql> insert into secondLastDemo(StudentName) values('David');
Query OK, 1 row affected (0.08 sec)**

**mysql> insert into secondLastDemo(StudentName) values('Maxwell');
Query OK, 1 row affected (0.10 sec)**

**mysql> insert into secondLastDemo(StudentName) values('Robert');
Query OK, 1 row affected (0.13 sec)**

**mysql> insert into secondLastDemo(StudentName) values('James');
Query OK, 1 row affected (0.14 sec)**

**mysql> insert into secondLastDemo(StudentName) values('Chris');
Query OK, 1 row affected (0.11 sec)**

**mysql> insert into secondLastDemo(StudentName) values('Ramit');
Query OK, 1 row affected (0.08 sec)******

使用select语句显示表中的所有记录。

查询如下。

代码语言:javascript
复制
****mysql> select *from secondLastDemo;****

以下是输出。

代码语言:javascript
复制
**+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 1         | Larry       |
| 2         | Carol       |
| 3         | Bob         |
| 4         | Sam         |
| 5         | Mike        |
| 6         | David       |
| 7         | Maxwell     |
| 8         | Robert      |
| 9         | James       |
| 10        | Chris       |
| 11        | Ramit       |
+-----------+-------------+

集合中有11行(0.00秒)**

下面是在MySQL中获取表的倒数第二行的查询。

代码语言:javascript
复制
****mysql> select *from secondLastDemo order by StudentId DESC LIMIT 1,1;****

**+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 10        | Chris       |
 +-----------+-------------+

集合中的1行(0.00秒)**输出显示倒数第二条记录。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68663624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档