
1、单列排序
SELECT FROM test1 ORDER BY date_time
默认升序,降序后面接"DESC"即可。
2、多列排序SELECT FROM test1 ORDER BY `status`, date_time DESC
首先按`status`字段排序,若`status`相等,则按data_time排序。
3、自定义排序SELECT FROM test1 ORDER BY FIELD(`status`, 3, 2, 4, 1, 5), date_time DESC
使用"FIELD()"函数,可指定顺序。
4、其他条件排序先按大于等于当前时间升序,再按小于当前时间降序,支持分页。
SELECT FROM test1 ORDER BY date_time < NOW(), IF(date_time < NOW(), 0, date_time), date_time DESC
附加SQL脚本:
CREATE TABLE `test1` (`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`date_time` datetime NOT NULL,
`status` int(5) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
INSERT INTO `test1` VALUES
(NULL, '测试1', '2018-03-05 11:09:00', 1),(NULL, '测试2', '2018-03-06 11:09:00', 1),(NULL, 'abc', '2018-03-07 11:09:00', 1),
(NULL, 'def', '2018-04-08 11:09:00', 2),(NULL, '李某某', '2018-04-17 11:09:00', 1),(NULL, '饭某某', '2018-04-20 13:09:00', 2),
(NULL, '赵', '2018-04-20 01:09:00', 4),(NULL, '倩', '2018-04-28 11:09:00', 2),(NULL, 'andy', '2018-04-30 11:09:00', 1),
(NULL, 'tony', '2018-05-08 11:09:00', 4),(NULL, 'tom', '2018-05-07 11:09:00', 3),(NULL, 'bill', '2018-05-18 11:09:00', 3),
(NULL, 'james', '2018-06-07 11:09:00', 4),(NULL, 'anthony', '2018-06-18 11:09:00', 2),(NULL, '盖茨', '2018-04-21 11:09:00', 1),
(NULL, '部长', '2018-04-24 11:09:00', 4),(NULL, '李总', '2018-04-20 11:09:00', 5),(NULL, '张总', '2018-04-29 11:09:00', 2),
(NULL, '王总', '2018-04-19 11:09:00', 3),(NULL, '唐总', '2018-05-01 11:09:00', 2);
参考的这篇文档Mysql排序方式
1、SQL Server 不支持数据库使用除默认排序规则以外的排序规则。因此,在重建 master 数据库之前,请从用户数据库中导出所有数据。
2 为数据库中的所有对象生成脚本。
3 使用适当的排序规则重新创建 master 数据库。
4 创建新的数据库。使用新的默认排序规则自动创建新的数据库。
5 运行以前保存的脚本以重新创建对象,然后导入以前导出的数据。
这是问如何让自动编号字段从1开始,
在ACCESS数据库中,自动编号字段能自动累加编号,保证编号的唯一性。即便是删除表中所有记录,输入新记录时,编号仍然会接着原来最后一条记录的编号往下编的。
有一种办法能让自动编号字段从1开始,具体步骤如下:
首先选取表,按Ctrl+C复制,再按Ctrl+V粘贴,注意,此时会有个d出框,如图:
选择“只粘贴结构”,这样生成一表空表,在这张表里新输入记录,自动编号字段就会从1开始了。
如何让自动编号字段从1开始排序?这个问题很简单,如果没有选择过排序字段,表就是按自动编号字段来排序的。
1、以日期进行排序
select
Rownum
"ID"
,
日期
,
金额,
商品
From
(select
日期,金额,商品
from
表
order
by
日期)
2、在排序后要求数据库中内容发生变化,如果不是考试的话是没人故意这么玩的。
任何对于数据的ID字段进行手工变动都是愚蠢而白痴的行为。
让然如果是老师故意考你们的话,可以用下面这个简单方法。
①建立临时表,使id字段为自增字段
create
table
tableName
(
id
INT(20)
not
null
AUTO_INCREMENT,
--自增属性
日期
char(20)
not
null,
金额
char(5)
not
null,
商品
char(2)
not
null
);
②将排好的数据插入新建的临时表
Insert
into
tableName(日期,金额,商品)
select
日期,金额,商品
from
原始表
order
by
日期
③将原表改成其他名,并将第二步建的中间表改名为原表名
alter
table
表1
rename
to
表2
我手头没有mysql只能按印象写出代码,你拿去试一下吧。
我印象中mysql对pl的支持不好,所以只给出了用sql语句的方案,你参考下吧。
排序的命令是sort,格式是:
SORT TO 新表名 ON 字段名
补充:
例如下面的命令:
use 学生
sort on 学号 to 学生_排序
产生一个新的 学生_排序DBF 文件,里面是排序了的。
如果你只是向按照某个标准进行排序查看一下,不生成新的文件,那么可以使用SQL语句,例如:
SELECT FROM 学生 ORDER BY 总成绩 DESC
插入的时候不存在新增的行在末尾这一说法,不过mysql的myisam引擎貌似可以控制在行尾插入,oracle不带这种功能。。
数据库是以文件形式存储在文件系统中,不存在像堆积木一样,一行行堆上去。。 只能说查询出来的内容可以排序。。
以上就是关于MySql的几种排序方式全部的内容,包括:MySql的几种排序方式、如何在sql server数据库中设置排序算法、如何为Access数据库中的数据填写排序编号等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)