sql查询数据库最后10条记录按降序如何排列?

sql查询数据库最后10条记录按降序如何排列?,第1张

SELECTTOP10FROM表名ORDERBY排序列DESC

SQL的执行顺序先按照你的要求排序,然后才返回查询的内容。例如有一个名为ID自动增长的列,表中有100条数据,列的值得分别是1、2、3、4???9、99、100。那么查询加了DESC你得到的是91到100条,就是最后十条,如果加ASC你得到的将会是1到10,也就是最前面的那几条。

降序用desc65条记录用top;

如selecttop65*from表orderby要按降序的字段desc;

selecttop65*fromtableorderbyiddesc。

数据的存储顺序和查出来后显示的顺序不同,看问题提出者的意思,是想改变数据的存储顺序。

可以充分利用主键,缺省的主键有聚簇索引特性,而聚簇索引的条目存放顺序与数据本身的存放顺序一致,充分利用这一点,改变主键或主键字段的取值,即可完成数据存储顺序的自编排。

例子中的id像是个常用的主键字段名,那么,修改某条记录的id值,无论是通过insert还是update,均已能够完成对应数据条目存储位置的变化。

如果想对根据任意字段实现存储顺序的自编排,恐怕是不行的,除非可以撤销表的原有主键,而将该字段设置为主键,但设为主键,就要求该字段的不可重复、不许为空等约束,而不是任意。

查询语句是sql语句中使用最多的 *** 作,也涉及到非常多的命令。比如where过滤,group

by分组,order by 排序 limit取值 having等。虽然多,但是各个命令执行的时候却是有顺序的,顺序如下:

select *

from 表名

①-- where 条件1

②-- group by 依据列

③-- having 条件2

④-- order by 依据列

⑤-- limit 0,1

为什么是这么个顺序,原因:

limit取值永远是最后一个.

如果你要order by排序,前提是要首先得到一个查询结果.

查询结果中的三个关键词,where总是是放在表名的后面,而havin过滤永远是放在group后面,所以就有了这么个顺序.如果不遵循顺序,就会出现错误。

是不是这样,我们可以用下面的建表语句验证下.

drop table if exists students

create table students (

studentNo varchar(10) primary key,

name varchar(10),

sex varchar(1),

hometown varchar(20),

age tinyint(4),

class varchar(10),

card varchar(20)

)

insert into students values

('001', '王昭君', '女', '北京', '20', '1班', '340322199001247654'),

('002', '诸葛亮', '男', '上海', '18', '2班', '340322199002242354'),

('003', '张飞', '男', '南京', '24', '3班', '340322199003247654'),

('004', '白起', '男', '安徽', '22', '4班', '340322199005247654'),

('005', '大乔', '女', '天津', '19', '3班', '340322199004247654'),

('006', '孙尚香', '女', '河北', '18', '1班', '340322199006247654'),

('007', '百里玄策', '男', '山西', '20', '2班', '340322199007247654'),

('008', '小乔', '女', '河南', '15', '3班', null),

('009', '百里守约', '男', '湖南', '21', '1班', ''),

('010', '妲己', '女', '广东', '26', '2班', '340322199607247654'),

('011', '李白', '男', '北京', '30', '4班', '340322199005267754'),

('012', '孙膑', '男', '新疆', '26', '3班', '340322199000297655')

查询该表中除1班外,所有其他班级的最大年龄,最小年龄,并且按照班号进行降序排列(过滤掉2班,只显示最前面的一条信息)

那么sql语句就是: select class,max(age),min(age) from students where class !='1班' group by class having class !='2班' order by class desc limit 1

在这条语句中,新人非常容易犯的错误 就是根据题意,将having放在order by 后面导致错误。原因在于order by应该放在hving的后面。 还有其他疑问的话建议你去搜一下黑马程序员,在IT业内算是比较有实力的机构,里面有线上和线下的课程,还有免费的视频,每天看一点学一下还是比较有用的。不过,如果真的是想入行或者进阶的话,花一段时间高专注度的学习是非常有必要的,投资自己报课试一下吧。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9926517.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存