資料排序的情況很常見,今天介紹一下mysql的幾種排序方式,是我最近有使用到的,希望能對大家有所幫助。
這裡先建立一張普通的表,
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);
有了資料,開始針對這些資料,做一些排序;
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
暫時這麼多,希望對大家有幫助。
MySql的幾種排序方式
資料排序的情況很常見,今天介紹一下mysql的幾種排序方式,是我最近有使用到的,希望能對大家有所幫助。這裡先建立一張普通的表,create table test1 id bigint 20 not null auto increment,name varchar 50 not null,date t...
mysql幾種索引 mysql的幾種索引
為什麼建立索引後,速度就會變快?答 使用索引後,查詢是按二叉樹演算法來查詢到記錄 索引使用的注意事項 索引的代價 1.占用磁碟空間 2.對dml 新增 修改 刪除 操作有影響,變慢 在哪些列上適合新增索引 1.較頻繁的作為查詢條件字段應該建立索引 select from emp where empn...
mysql幾種語言 mysql的幾種SQL語句
一 資料查詢語言 dql dql全稱 data query language,作用是從表中獲取資料,用的最多的關鍵字是select,保留字有where order by group by等 1 select user,host from mysql.user select user,host fro...