问题描述
对一个表,按照某个属性进行从小到大排序,然后取出倒数第三行。
需要使用到order by 、 desc以及limit。
详细解释
举例:
student表显示如下:
SELECT * FROM student
ORDER BY ID;
ORDER BY
表示对结果集的ID列进行排序,ORDER BY默认从小到大排序,运行以上语句,结果如下:
可以看到,student表按照ID列从小到大进行排序了。
DESC
如果需要对其进行从大到小排序,那么需要使用desc了(默认是从小到大,如果添加asc也是从小到大的排序)
SELECT * FROM student
ORDER BY ID DESC;
这一次排序的结果ID是按照从大到小的顺序了。
LIMIT
先不解释,看看加上limit运行的结果会是什么
SELECT * FROM student
ORDER BY ID DESC LIMIT 1;
SELECT * FROM student
ORDER BY ID DESC LIMIT 2;
现在可以看出来了吧,在最后加上limit+2,表示取出的是结果集中的前2行。
取倒数第三行呢?
再来看看下面的几个例子
SELECT * FROM student
ORDER BY ID DESC LIMIT 2,1;
SELECT * FROM student
ORDER BY ID DESC LIMIT 2,2;
在limit后面添加的第一个数字m代表显示结果集中的前m行,第二个数字n则代表的是从m+1行开始数n行进行显示
那么开头的题目我们可以这样解决:
SELECT * FROM student
ORDER BY ID DESC LIMIT 2,1;