我想要获取表中倒数第二行。通过这个查询,我得到了最后一行,但是我想得到倒数第二行,它的值在max(id)之前。有谁可以帮我?提前感谢
query= "SELECT * from table WHERE id=(select max(id) from table)"发布于 2021-08-05 09:09:07
依赖于您的RDBMS...
使用LIMIT和OFFSET跳过最后一行
SELECT *
FROM table
WHERE id = (
SELECT MAX(id)
FROM table
LIMIT 1
OFFSET 1
)或者,您可以使用TOP
SELECT TOP 1 *
FROM (
SELECT TOP 2 *
FROM table ORDER BY id DESC) x
ORDER BY id发布于 2021-08-05 11:03:53
假设行是按id排序的,那么最后一行就是id最大的那一行,那么在标准SQL中,您可以使用:
select t.*
from t
order by t.id desc
offset 1 row fetch first 1 row only;在不支持offset/fetch的数据库中,通常有类似的方法。
发布于 2021-08-05 16:59:33
您需要使用ORDER BY子句来获取表的倒数第二行:
语法如下所示。
select *from yourColumnName DESC LIMIT 1,1;yourTableName order by select DESC LIMIT 1;
为了理解上面的语法,让我们创建一个表。创建表的查询如下所示。
mysql> create table secondLastDemo
-> (
-> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentName varchar(10)
-> );查询正常,0行受影响(0.52秒)
使用的Insert 命令在表中插入一些记录。
查询如下。
**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语句显示表中的所有记录。
查询如下。
****mysql> select *from secondLastDemo;****以下是输出。
**+-----------+-------------+
| 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中获取表的倒数第二行的查询。
****mysql> select *from secondLastDemo order by StudentId DESC LIMIT 1,1;****
**+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 10 | Chris |
+-----------+-------------+集合中的1行(0.00秒)**输出显示倒数第二条记录。
https://stackoverflow.com/questions/68663624
复制相似问题