MySql的几种排序方式

MySql的几种排序方式,第1张

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数据库中的数据填写排序编号等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/sjk/10201854.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存